Hallo,
ich habe das Problem, dass meine TIdFTP Komponente unter Vista ewig auf ein Ergebnis bei der Funktion "List" wartet.
Ich konnte die Zeile lokalisieren wo er ewig wartet.
In der
Unit idTCPClient der Indys:
Delphi-Quellcode:
procedure TIdTCPClientCustom.Connect;
begin
// Do not call Connected here, it will call CheckDisconnect
EIdAlreadyConnected.IfTrue(Connected, RSAlreadyConnected);
if IOHandler = nil then begin
IOHandler := MakeImplicitClientHandler;
IOHandler.OnStatus := OnStatus;
ManagedIOHandler := True;
end;
try
// Bypass GetDestination
if FDestination <> '' then begin
IOHandler.Destination := FDestination;
end;
{BGO: not any more, TIdTCPClientCustom has precedence now (for port protocols, and things like that)
// We retain the settings that are in here (filled in by the user)
// we only do this when the iohandler has no settings,
// because the iohandler has precedence
if (IOHandler.Port = 0) and (IOHandler.Host = '') then begin
IOHandler.Port := FPort;
IOHandler.Host := FHost;
end;
}
IOHandler.Port := FPort; //BGO: just to make sure
IOHandler.Host := FHost;
if IOHandler is TIdIOHandlerSocket then begin
TIdIOHandlerSocket(IOHandler).IPVersion := FIPVersion;
end;
if FConnectTimeout > 0 then begin
IOHandler.ConnectTimeout := FConnectTimeout;
end;
if FReadTimeout > 0 then begin
IOHandler.ReadTimeout := FReadTimeout;
end;
IOHandler.Open;//<---------- Hier hängt er!!
if IOHandler.Intercept <> nil then begin
IOHandler.Intercept.Connect(Self);
end;
DoStatus(hsConnected, [Host]);
DoOnConnected;
except
IOHandler.Close;
raise;
end;
end;
Was ich interessant finde: Ein paar Zeilen obendran wird eine
IP-Adresse und ein Port zugewiesen.
Beide habe ich nirgenwo eingetragen, die
IP-Adresse ist aus dem lokalen Netzwerk(192.168.115.20) und der Port ist immer unterschiedlich.