Einzelnen Beitrag anzeigen

Benutzerbild von Deltachaos
Deltachaos

Registriert seit: 20. Feb 2008
Ort: Berlin
195 Beiträge
 
Delphi 7 Personal
 
#10

Re: Per Indy-FTP gantzen Ordener downlorden?

  Alt 3. Mai 2008, 10:29
Zitat von Fussball-Robby:
Schonmal gesucht? hier wurde ein Code gepostet, mit dem ein Ordner auf einem FTP-Server rekursiv durchsucht und das Ergebnis aufgelistet wird. Wenn du das dann hast, sollte das downloaden auch nicht mehr schwer sein.

Mfg
hm, eigenlich hatte ich schon gesucht.
Irgendwie funktionirt das bei mir ich so wirklich. eigentlich gar nicht.

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(filelist);
    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;


procedure TForm1.Button4Click(Sender: TObject);
var slist, dir: TStrings;
    anzahl, sl: integer;
begin
  FindAllFilesFTP(IdFTP1, form1.dir.text, slist, dir, true, false);
  form1.ListBox1.Items:= slist;
  form1.ListBox2.Items:= dir;
end;
Programm startet zwar ich bockomme die Meldung das Das Verzeichniss nicht existirt.

und wenn ich hier:

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; //<<< Hier
    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)
nicht "(form1.listbox1.items)" eintrage leut der code mit der meldung
Code:
[Fehler] Unit1.pas(85): Nicht genügend wirkliche Parameter
gar nicht.

und ich finde idAllFTPListParsers irgentwie nicht.
Angehängte Dateien
Dateityp: rar baup_161.rar (340,7 KB, 5x aufgerufen)
Maximilian Ruta
  Mit Zitat antworten Zitat