Hallo,
vielen Dank für die schnellen Antworten.
Ich habe das eben mit Username = 'Anonymous' probiert. Leider ohne Erfolg. Ich bekomme beim Versuch das Verzeichnis zu wechseln immer noch entsprechende Fehlermeldungen.
Die Fehlermeldung lautet im Detail "Please login with USER and PASS."
Ich habe den Quellcode natürlich entsprechend angepaßt sodass dieser nun folgendermaßen aussieht:
Delphi-Quellcode:
function FTP_RetrieveFileList(var aList: TStringList; aIP: string; aPort: integer;
aUsername, aPassword, aDirectory: string; aPassive: boolean; aMask: string = ''): integer;
var
lTempList: TStringList;
i: integer;
lFTP: TIdFTP;
begin
Result := CFTP_OK;
if (aList = nil) then
exit;
aList.Clear;
lFTP := TIdFTP.Create(nil);
try
lFTP.Host := aIP;
lFTP.Port := aPort;
lFTP.Username := aUsername;
lFTP.Password := aPassword;
lFTP.Passive := aPassive;
try
if (aUsername = 'Anonymous') then
lFTP.Connect(false)
else
lFTP.Connect(true);
except
Result := CFTP_ERROR_CONNECT;
end;
if (lFTP.Connected) then
begin
try
lFTP.ChangeDir(aDirectory);
except
Result := CFTP_ERROR_DIRECTORYNOTEXIST;
end;
lTempList := TStringList.Create;
try
lFTP.List(lTempList);
for i := 0 to lFTP.DirectoryListing.Count - 1 do
if (lFTP.DirectoryListing.Items[i].ItemType = ditFile) then
aList.Add(lFTP.DirectoryListing.Items[i].FileName);
finally
lTempList.Free;
end;
try
lFTP.Disconnect;
except
Result := CFTP_ERROR_DISCONNECT;
end;
end;
finally
lFTP.Free;
end;
[Nachtrag]
Wenn ich meinen Quellcode nicht geändert hätte ... hätte es funktioniert. Anscheinend muss man auch für Anonymous Zugriff die Connect Methode mit erstem Parameter true aufrufen. Bei näherer Betrachtung glaub ich, ist false nur dann gut, wenn man sich mit einem TFTP Server verbinden möchte, bei welchem es ja auch keine Usernamen gibt (soviel ich weiß)
[/Nachtrag]