Ich benutze folgende Funktion, um auf dem
FTP Sever Verzeichnisse auszulesen.
Das funktioniert unter 10.4, aber nicht mehr unter 11.
Weiß jemand, ob sich bei
Indy etwas geändert hat?
Delphi-Quellcode:
Function FTPDirExists(
var DirName:
String; IdFTPComp: TIdFTP): Boolean;
var
itm: TIdFTPListItems;
i : integer;
begin
Result := False;
IdFTPComp.List;
itm := IdFTPComp.DirectoryListing;
for i := 0
to itm.count -1
do begin
if itm.Items[i].ItemType = ditDirectory
then begin
if itm.Items[i].Filename <> '
.'
then begin
if itm.Items[i].Filename <> '
..'
then begin
if UpperCase(itm.Items[i].Filename) = UpperCase(DirName)
then begin
//da FTP Server Groß/Kleinschreibung unterscheiden,
//machen wir den Test alles mit Großschreibung und geben gegebenenfalls den
//korrekten Pfad trotzdem zurück
DirName := itm.Items[i].Filename;
Result := True;
Exit;
end;
end;
end;
end
end;
end;
Es kommt immer TimeOut nach der eingestellten Zeit, siehe unten weiteres Beispiel.
Soweit wie mir bekannt ist, ist das ein ServU auf der anderen Seite.
Delphi-Quellcode:
var
list_directories: TStringList;
i : integer;
begin
//nun versuchen, sich beim FTP Server einzuloggen
IdFTP1.Host := '
xxx.de';
IdFTP1.Username := '
username';
IdFTP1.Password := '
Password';
if not IdFTP1.Connected
then IdFTP1.Connect;
if not IdFTP1.Connected
then begin
ShowMessage(Format('
FTP Server not connected! Cancel', []));
end;
i := IdFTP1.Greeting.Text.Count;
ShowMessage(IdFTP1.Greeting.Text[0]);
list_directories := TStringList.create;
idftp1.List(list_directories, '
', true); >>>>>>>>>>>>>>> hier immer TimeOut
for i := list_directories.Count - 1
downto 0
do begin
ShowMessage(list_directories[i]);
end;