Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#19

AW: Rekursiver Aufruf von FTPFindFirstFile

  Alt 18. Mär 2012, 15:09
Bei dem Auflisten eines Verzeichnis über FTP muss man richtig vorgehen.
FTP Zugriffe sind teuer da sie über das Netzwerk gehen und dementsprechend viel Zeit brauchen.
Daher muss die Strategie so aussehen:
Verzeichnis mit "List" abrufen und alle Dateien in den Tree eintragen.
Unterverzeichnisse werden in diesem 1. Durchlauf ignoriert.
In einem 2. Durchlauf durch ftp.DirectoryListing werden alle Unterverzeichnisse rekursiv besucht.
Ein erneutes Auflisten des aktuellen Verzeichnis ist dabei unnötig und muss unbedingt vermieden werden!!

Sehr zu empfehlen ist auch die Übergabe einer Rekursionstiefe:
Delphi-Quellcode:
procedure ListDir(dir: String; const tv: TTreeView; tn: TTreeNode; level:integer);
begin
  if level <= 0 then Exit;
  ...
  // und später der rekursive Aufruf
  listdir(itm.items[i].filename, tv, node, level - 1);
...
Möchte man nur das Basisverzeichnis auflisten übergibt man für "level" den Wert 1;
um alle Unterverzeichnisse aufzulisten übergibt man einen Wert > 100.
Das sollte für alle "normalen" FTP Server ausreichen.
Bei einem unbekannten FTP-Server könnte man mit level=2 beginnen, damit man sich nicht in den möglichweise Tausenden Unterverzeichnissen verliert.
  Mit Zitat antworten Zitat