![]() |
FTPList beim Server und Client...?
Hallo Leute,
Ich bin neu hier im Forum, habs aber schon sehr oft gebraucht um Probleme zu lösen. Ihr bietet hier wirklich Super Hilfe wies mir scheint! Nun zu meinem Problem: Ich versuche gerade mit den Indy 10 Komponenten IdFTPServer und IdFTP einen funktionierenden FTP-Server und FTP-Client zu basteln. Das ganze soll später übers eigene Netzwerk zwischen 2 PCs laufen. Also nicht direkt übers Internet. An sich läuft der Server. Da bin ich schonmal ganz zufrieden mit. Deswegen hab ich mich ans Programmieren des Clients gemacht. Login, Directroy-Change und Upload funktioniert auch einwandfrei. Jetzt möchte ich aber noch irgendwie die Ordner im Verzeichnis auf dem Server in einer ListBox haben, und in einer zweiten ListBox die Dateien dieses Verzeichnisses. Dazu dachte ich, ich mach das mit
Delphi-Quellcode:
Da kommen aber Ordner und alle Dateien. Also, gesucht in Google & Co, und gefunden dass man im 2. Parameter z.b. '*' setzen soll um nur Ordner zu bekommen. Leider gibt er dann bei mir gar nichts mehr zurück. Was ich jedoch ausgefunden habe, ist, dass wenn ich diesen Parameter im Quellcode des Servers setze, das schon funktioniert... Hier die beiden Quellcodes:
IdFTP1.List(ListBox1.Items,'',false);
Server:
Delphi-Quellcode:
Im Client:
procedure TForm1.IdFTPServer1ListDirectory(ASender: TIdFTPServerContext;
const APath: String; ADirectoryListing: TIdFTPListOutput; const ACmd, ASwitches: String); var LFTPItem :TIdFTPListItem; SR : TSearchRec; SRI : Integer; begin Memo1.Lines.Add('Client lists Directory: '+APath); ADirectoryListing.DirFormat := doUnix; SRI := FindFirst(HomeDir + APath + '*.*',faAnyFile - faHidden - faSysFile, SR); While SRI = 0 do begin LFTPItem := ADirectoryListing.Add; LFTPItem.FileName := SR.Name; LFTPItem.Size := SR.Size; LFTPItem.ModifiedDate := FileDateToDateTime(SR.Time); if SR.Attr = faDirectory then LFTPItem.ItemType:= ditDirectory else LFTPItem.ItemType:=ditFile; SRI := FindNext(SR); end; FindClose(SR); SetCurrentDir(HomeDir + APath + '..'); end;
Delphi-Quellcode:
Vielleicht wisst ihr ja was ich da falsch gemacht habe(?). Ich hab nichts gefunden, auch die Suchfunktion des Forums hat mir bisher nichts geholfen.
procedure TForm1.ListAll;
var DirList: TIdFTPListItems; i: integer; begin IdFTP1.List(ListBox1.Items,'*.ini',false); DirList:=IdFTP1.DirectoryListing; ListBox2.Items.Add(IntToStr(DirList.Count-1)); for i:=0 to (DirList.Count-1) do begin ListBox2.Items.Add(DirList.Items[i].FileName); ListBox2.Items.Add(IntToStr(i)); end; Memo1.Lines.Add('Listed dir: '+IdFTP1.RetrieveCurrentDir); end; Als zweites hab ich dann noch IdFTP1.DirectoryListing versucht wie ihr oben seht. Da kommt aber nichts rein... Der Wert in RirList.Count bleibt 0. Nun hab ich dazu im Forum gefunden dass das behoben werden kann indem man IdAllFTPListParsers in die uses einbindet. Das hat mir bisher aber auch nichts geholfen. Ich hoffe ihr könnt mir helfen! Schonmal vielen Dank! Gruss Kruimel |
Re: FTPList beim Server und Client...?
Hallo Leute,
Mein Problem hat sich doch noch gelöst. Irgendwo hier im Forum hab ich noch etwas gefunden und ausprobiert. Das war die einstellung USEMLis... Das auf true geschaltet und es funktioniert. Die Aufteilung von Odnern und Dateien klappt jetzt auch per ItemType... Gruss Kruimel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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