Kannst du, ist aber ineffizienter als die zweite Lösung
Delphi-Quellcode:
procedure TForm1.auflisten(CurrentNode: TTreeNode);
var
i: integer;
l: TIdFtpListItems;
dirs: TStringList;
current: TTreeNode;
begin
dirs := TStringList.Create();
idftp1.List(nil,'',true);
l:=idftp1.DirectoryListing;
for i := 0 to l.Count-1 do
begin
current:=TreeView1.Items.AddChild(CurrentNode,l.Items[i].FileName);
if (l.Items[i].ItemType=ditDirectory) then
begin
current.ImageIndex:=0;
dirs.addObject(l.Items[i].FileName, current);
end;
else
current.ImageIndex:=-1;
end;
for i := 0 to dirs.count - 1 do
begin
idftp1.changedir(dirs[i]);
auflisten(dirs.objects[i] as TTreeNode); // < Hier wird auflisten rekursiv aufgerufen
idftp1.ChangeDirUp;
end;
dirs.Free;
end;
Versuch das mal so