![]() |
Per Indy-FTP gantzen Ordener downlorden?
Ich möchte ein 'Backup' programm für meine Hompage schreiben.
Ist ja auch nicht so das Problem. nur ich wein nicht wie ich einen gantzen ordner downlorden kann. Biss jetzt habe ich das
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var Present: TDateTime; Year, Month, Day: Word; begin // DecodeDate(Present, Year, Month, Day); form1.Show; form1.Label1.Caption:='Setze Port...'; form1.IdFTP1.Port:=21; form1.Label1.Caption:='Übertrage Username...'; form1.IdFTP1.Username:='tja'; form1.Label1.Caption:='Übertrage Password...'; form1.IdFTP1.Password:='tja'; form1.Label1.Caption:='Verbinde mit Host...'; form1.IdFTP1.Host:='fos-clan.com'; form1.Label1.Caption:='Host-setzen fertig! Warte auf Antwort vom Server...'; form1.IdFTP1.Connect; form1.Label1.Caption:='Verbindung Hergestellt!'; end; |
Re: Per Indy-FTP gantzen Ordener downlorden?
Hallo Maximilian,
du wirst dir mit der Methode List() die Namen der Dateien im Verzeichnis besorgen und diese dann einzeln mittels Get() holen müssen. Grüße vom marabu |
Re: Per Indy-FTP gantzen Ordener downlorden?
Zitat:
|
Re: Per Indy-FTP gantzen Ordener downlorden?
Zitat:
Ich hab biss etz das:
Delphi-Quellcode:
Verbindung usw. natürlich vorausgesetzt.
procedure TForm1.Button4Click(Sender: TObject);
var slist: TStrings; begin SList := TStringList.Create; IdFTP1.List(slist,'*',false); Listbox1.Items:=sList; end; Ich sehe ja auch die Ordner und dateien aber sie soll das program wisse was ein ordner ist und was nicht an der endung oder keine endung=ordner endung=Datei. gut ok dan lässt man in den ordner wechseln und da dan nochml lesen! Auserdem habe ich noch nie mit Listboxen gearbeitet. Kann ich ein kleinen Denkanstos haben? |
Re: Per Indy-FTP gantzen Ordener downlorden?
Hier dein Denkanstoß:
Delphi-Quellcode:
Getippt und nicht getestet.
procedure GetFilenames(ftp: TIdFtp; const mask: string; s: TStrings);
var i: Integer; items: {IdFtpList.}TIdFtpListItems; begin s.BeginUpdate; try s.Clear; FTP.List(nil, mask, True); items := FTP.DirectoryListing; for i := 0 to Pred(items.Count) do if items[i].ItemType = ditFile then s.Add(items[i].FileName); finally s.EndUpdate; end; end; Gute Nacht. |
Re: Per Indy-FTP gantzen Ordener downlorden?
Zitat:
Code:
[Fehler] Unit1.pas(64): Undefinierter Bezeichner: 'TIdFTPListItems'
|
Re: Per Indy-FTP gantzen Ordener downlorden?
Zitat:
Delphi-Quellcode:
uses IdFTPList;
|
Re: Per Indy-FTP gantzen Ordener downlorden?
Zitat:
aber es werden ja nur die Daten des Hauptverzeichnisses gelistet. sol aber etwa so werden:
Code:
u.s.w.
index.php
blabla.irgentwas ordner/blabla.irgentwas ordner/ordner/blabla.irgentwas Das problem ich weis weder Anzahl der Daten noch anzahl der Ordner und Unterordner. :wall: |
Re: Per Indy-FTP gantzen Ordener downlorden?
Schonmal gesucht?
![]() Mfg |
Re: Per Indy-FTP gantzen Ordener downlorden?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Irgendwie funktionirt das bei mir ich so wirklich. eigentlich gar nicht.
Delphi-Quellcode:
Programm startet zwar ich bockomme die Meldung das Das Verzeichniss nicht existirt.
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; und wenn ich hier:
Delphi-Quellcode:
nicht "(form1.listbox1.items)" eintrage leut der code mit der meldung
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)
Code:
gar nicht.
[Fehler] Unit1.pas(85): Nicht genügend wirkliche Parameter
und ich finde idAllFTPListParsers irgentwie nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz