Einzelnen Beitrag anzeigen

ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#24

Re: ftp komplettes verzeichniss mit subdirs und files lösche

  Alt 25. Mär 2008, 15:14
Hallo,

falls du es noch immer nicht hinbekommen haben solltest. Ich brauchte heute auch die Möglichkeit, alle Dateien eines FTP-Verzeichnisses incl. Unterverzeichnisse aufzulisten. Hier hast du die umgeschriebene Prozedur:

Delphi-Quellcode:
procedure FindAllFilesFTP(FTPCon: TIdFTP; Directory: String; FileList,DirList: TStrings; WithSubDirs, ClearList: Boolean);
  procedure ScanDir(const Directory,SubDir: String; WithDir: Boolean);
  var
    i: Integer;
  begin
    FTPCon.ChangeDir(Directory + SubDir);
    FTPCon.List;
    for i := 2 to FTPCon.DirectoryListing.Count-1 do
      if FTPCon.DirectoryListing.Items[i].ItemType = ditFile then
      begin
        if WithDir then FileList.Add(SubDir + FTPCon.DirectoryListing.Items[i].FileName)
        else FileList.Add(FTPCon.DirectoryListing.Items[i].FileName);
      end else if FTPCon.DirectoryListing.Items[i].ItemType = ditDirectory then
        DirList.Add(SubDir + FTPCon.DirectoryListing.Items[i].FileName + '/');

    if WithSubDirs then
    begin
      for i := 2 to FTPCon.DirectoryListing.Count-1 do
        if FTPCon.DirectoryListing.Items[i].ItemType = ditDirectory then
          ScanDir(Directory + SubDir,FTPCon.DirectoryListing.Items[i].FileName + '/',True);
    end;
  end;

begin
  if not FTPCon.Connected then Exit;
  FileList.BeginUpdate;
  DirList.BeginUpdate;
  try
    if ClearList then
    begin
      FileList.Clear;
      DirList.Clear;
    end;
    if Directory = 'then Exit;
    if Directory[Length(Directory)] <> '/then
      Directory := Directory + '/';
    ScanDir(Directory,'',False);
  finally
    DirList.EndUpdate;
    FileList.EndUpdate;
  end;
end;
Das war nun wirklich nicht schwer. Du musst der Prozedur eine FTP-Instanz übergeben. Was noch wichtig ist, vorher bitte folgendes fest einstellen: FTPCon.UseMLIS := True;
Und in die uses der Unit "IdAllFTPListParsers" eintragen.
WICHTIG: Ist für Indy 10 geschrieben!!!
Viel Spaß damit.
Grüße ddcool
  Mit Zitat antworten Zitat