![]() |
FTP.List fehler
Mittag!
Ich bin schon seit 4 tagen dabei einen fehler zu finden, aber irgendwie komm ich da nicht weiter... hab schon alles mögliche ausprobiert und schon jedes forum durchforstet... Hab folgendes prob: Wenn ich mir den inhalt eines verzeichnisses mit IdFTP1.List(ListBox2.Items,'*',FALSE); ausgeben lasse, dann sollte nach der Referenz mir ja nur die Ordnernamen (durch das * als zweiten Parameter ) und ohne weitere details (durch das FALSE als dritten Parameter) ausgeben. Das sieht dann so aus: Ordner1 Ordner2 Ordner3 ... Dies macht er auch bei einem FTP Server aber bei einem anderem FTP Server gibt er mir total was anderes wieder: . .. Ordner1\SubOrdner1 Ordner1\Datei1.txt Ordner1\Datei2.txt Ordner2\SubOrdner1 Ordner2\Datei1.txt Ordner3\SubOrdner1 Ordner3\SubOrdner2 Ordner3\Datei1.txt Ordner3\Datei2.txt nun brauch ich aber nur die ordner namen... Ist das ne einstellungssache am FTP? habe auch schon versucht das ganze manuell zu lösen aber da gibts dann auch nur probleme.... habe da mehrere wege versucht z.b. so
Delphi-Quellcode:
ausgeführt wird dieser teil in Form1...IdFTP1.List(Form5.ListBox1.Items,'*',FALSE); Name:=''; dummy:=''; for g:=0 to Form5.ListBox1.Items.Count-1 do begin Name:=Copy(Form5.ListBox1.Items[g],1,Pos('\SubOrdner1',Form5.ListBox1.Items[g])-1); if Name <> dummy then begin dummy:=Name; Form5.ListBox2.Items.Add(Name); end; end; Fehlermeldung hierbei: EAccessViolation Zugriffsverletzung bei Adresse 004B8494 in Modul Project1... Ich benutze delphi 6 enterprise und Indy 8.0.25 Laut referenz sollte das ja mit TIdFTP.list so gehen wie ich es oben mache: procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean); ASpecifier is a String that contains a mask indicating the files and/or directories to be included in the listing. ASpecifier can contain common wildcard characters like '*' and '?'. Some useful masks include: *.* - All files in the current directory. * - All directory entries in the current directory. *. - All files regardless of extension in the current directory. A??.txt - All text files that have a 3-character name starting with 'A'. Hab schon überlegt indy zuupdaten, da ich bei meiner fehlersuche auf TIdFTP.directorylisting gestoßen bin. das gibts wohl aber noch nicht in Indy 8.0.25, denn in der referenz steht nichts und wenn ich die methode benutzen will ist sie unbekannt. also kann ich nur noch updaten, aber ich bin mir da nicht ganz sicher, ob dann noch die ganzen anderen sachen funktionieren, da sie ja auf indy 8.0.25 geschrieben wurden! Hat da jemand ahnung? Hoffe jemand hat da mal ne idee und danke im voraus! Dioony |
Re: FTP.List fehler
Vielleicht hilft dir das weiter:
Delphi-Quellcode:
Mit D7 Enterprise / Indy9 gemacht. DirectoryListing wird nur gefüllt, wenn du Details anforderst und dadurch der Parser getriggert wird. Wenn die Property in Indy8 noch fehlen sollte, dann kannst du auch selbst parsen. Ist nicht so schwer.
uses
IDFtpList; var l: TIdFtpListItems; i: integer; sl: TStringList; begin sl := TStringList.Create; // create raw data container FTPClient.Connect(true, -1); // login FTPClient.List(sl, '*', true); // get all entries with details l := FTPClient.DirectoryListing; // get ref of parsed entries for i := l.Count - 1 downto 0 do // start on safe side if l[i].ItemType = ditDirectory // check for sub directories then sl[i] := l[i].FileName // keep dir entries else sl.Delete(i); // drop other entries FTPClient.Disconnect; // logout ListBox.Items.Assign(sl); // show directory names sl.Free; // drop raw data container end; Grüße vom marabu |
Re: FTP.List fehler
danke erstmal!
Werde es mal austesten! hab jetzt allerdings von indy 8 auf indy 10 geupdated... Hoffe, dass ich das jetzt mal hinbekomme! Werde mein hoffentlich erfolgreiches ergebnis posten! cya Dioony |
Re: FTP.List fehler
@diooney
Hat das jetzt geklappt? wenn ja, wie hast Du es gemacht? :? |
Re: FTP.List fehler
Ich hab das selbe Problem. Bei:
Delphi-Quellcode:
funktioniert es! (EDIT: d.h. es funktioniert nicht richtig, es werden auch alle dateien angezeigt, aber damit könnte ich leben wenn nicht die ganzen anderen informationen gesendet werden würden)
List(sl, '*', true)
aber:
Delphi-Quellcode:
funktioniert nicht, da zeigt er bei mir nur dateien an.
List(sl, '*', false)
Hat da jemand eine Idee? oder weiss jemand ob man irgendwie einfach überprüfen kann ob ein Ordner schon existiert ? Ich benutze Delphi 7 enterprise und Indy 10(soweit die installation geklappt hat !?) |
Re: FTP.List fehler
Hi!
Zur Info: Bei geht das mit Indy 10 und D7 Ep auch nie...
Delphi-Quellcode:
oder auch mit
var
List : TStringList; FTPList: TIdFtpListItems; begin List:=TStringList.Create; idFTP1.List(List,'',True); FTPList:= idFTP1.DirectoryListing; end;
Delphi-Quellcode:
FTPList.Count ist leider immer = 0
idFTP1.List(List,'*',True);
Nur List selber parsen klappt! Florian |
Re: FTP.List fehler
Hallo allerseits,
So hab's ich gemacht (mit Indy 10):
Delphi-Quellcode:
var s1, s2, s3, s4: string;
c: integer; L: TIdFTPListItems; sl: TStringList; sl := TStringList.Create; try IdFTP1.List(sl); L := IdFTP1.DirectoryListing; finally for c := 0 to L.Count -1 do begin with L.Items[c] do begin s1 := FileName; s2 := IntToStr(Size); case L.Items[c].ItemType of // Ord-Wert: ditDirectory: it := 'DIR'; // 0 ditFile : it := 'File'; // 1 ditSymbolicLink: it := 'SymbLk'; // 2 ditSymbolicLinkDir: it := 'SymbLD'; // 3 ditBlockDev: it := 'BlkDev'; // 4 ditCharDev: it := 'ChrDev'; // 5 ditFIFO: it := 'FIFO'; // 6 ditSocket: it := 'Socket'; // 7 end; s3 := DateToStr(ModifiedDate); s4 := PermissionDisplay; end; end; end; sl.free; Funktioniert einwandfrei. Fertiges Produkt zu sehen unter: ![]() mfg Herbert |
Re: FTP.List fehler
Um anderen Suchenden zu helfen, falls es dennoch nicht klappt:
Lösung unter: ![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 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