![]() |
Idftp nur Ordner auflisten
Hallo
Ich nutze folgende Zeile um alle Dateien (ink. Ordner) aufzulisten
Delphi-Quellcode:
IdFTP1.List();
for I := 0 to IdFtp1.DirectoryListing.Count - 1 do ListBox2.Items.Add(IdFtp1.DirectoryListing.Items[I].FileName); Jetzt wollte ich das so abändern dass nur Ordner angezeigt werden. Also habe ich folgendes versucht.
Delphi-Quellcode:
IdFTP1.List();
for I := 0 to IdFtp1.DirectoryListing.Count - 1 do if IdFtp1.DirectoryListing.Items[I].FileName[Length(IdFtp1.DirectoryListing.Items[I].FileName[i])-2]='.' =false then ListBox2.Items.Add(IdFtp1.DirectoryListing.Items[I].FileName); Aber leider kommen immer noch alle Dateien / Ordner in die Listbox. Weiss jemand was ich falsch mache? |
AW: Idftp nur Ordner auflisten
Schau doch einfach mal nach, was diese DirectoryListing-Items ausser Filename noch so anbieten.
Evtl. waren die Indy-Leute ja schlau und haben noch ein paar mehr Informationen reingepackt. |
AW: Idftp nur Ordner auflisten
:-/ Vermutlich waren die schon schlau :-)
Also wenn du Data meinst
Delphi-Quellcode:
Müsste ich da ja noch irgendwie den Namen raus filtern.
IdFtp1.DirectoryListing.Items[I].Data
Und ansonsten habe ich noch versucht mit
Delphi-Quellcode:
idftp1.DirectoryListing.Items[i].ItemType=(ditDirectory)
Weis aber einerseits nicht genau was das macht und andererseits schreibe ich es anscheinend auch falsch.
Code:
[DCC Error] TabbedTemplate.pas(258): E2003 Undeclared identifier: 'ditDirectory'
Oder suche ich noch bei den falschen Punkten? |
AW: Idftp nur Ordner auflisten
Hast Du IdFTPList eingebunden?
Delphi-Quellcode:
idftp1.DirectoryListing.Items[i].ItemType=IdFTPList.ditDirectory;
|
AW: Idftp nur Ordner auflisten
Jupp, wenn der Compiler es nicht findet, dann gibt es zwei Möglichkeiten:
- die Unit ist nicht eingebunden - es befindet sich in einem anderem Scope/Namespace Letzteres tritt bei Enums z.B. auf, wenn {$SCOPEDENUM} aktiv ist und man dann auch den Typenbezeichner mit angeben muß. |
AW: Idftp nur Ordner auflisten
Achsoooooo.:evil: Danke euch allen.:thumb:
Dachte list sei schon mit der idftp Komponente dabei... Jetzt geht's :-D |
Idftp nur Ordner auflisten funktioniert nicht
Ich benutze folgende Funktion, um auf dem FTP Sever Verzeichnisse auszulesen.
Das funktioniert unter 10.4, aber nicht mehr unter 11. Weiß jemand, ob sich bei Indy etwas geändert hat?
Delphi-Quellcode:
Es kommt immer TimeOut nach der eingestellten Zeit, siehe unten weiteres Beispiel.
Function FTPDirExists(var DirName: String; IdFTPComp: TIdFTP): Boolean;
var itm: TIdFTPListItems; i : integer; begin Result := False; IdFTPComp.List; itm := IdFTPComp.DirectoryListing; for i := 0 to itm.count -1 do begin if itm.Items[i].ItemType = ditDirectory then begin if itm.Items[i].Filename <> '.' then begin if itm.Items[i].Filename <> '..' then begin if UpperCase(itm.Items[i].Filename) = UpperCase(DirName) then begin //da FTP Server Groß/Kleinschreibung unterscheiden, //machen wir den Test alles mit Großschreibung und geben gegebenenfalls den //korrekten Pfad trotzdem zurück DirName := itm.Items[i].Filename; Result := True; Exit; end; end; end; end end; end; Soweit wie mir bekannt ist, ist das ein ServU auf der anderen Seite.
Delphi-Quellcode:
var
list_directories: TStringList; i : integer; begin //nun versuchen, sich beim FTP Server einzuloggen IdFTP1.Host := 'xxx.de'; IdFTP1.Username := 'username'; IdFTP1.Password := 'Password'; if not IdFTP1.Connected then IdFTP1.Connect; if not IdFTP1.Connected then begin ShowMessage(Format('FTP Server not connected! Cancel', [])); end; i := IdFTP1.Greeting.Text.Count; ShowMessage(IdFTP1.Greeting.Text[0]); list_directories := TStringList.create; idftp1.List(list_directories, '', true); >>>>>>>>>>>>>>> hier immer TimeOut for i := list_directories.Count - 1 downto 0 do begin ShowMessage(list_directories[i]); end; |
AW: Idftp nur Ordner auflisten funktioniert nicht
Zitat:
Oder die aktuelle Indy Version downloaden und es damit in beiden versuchen. Wenn es dann in Delphi 11 noch nicht funktioniert, ist es vermutlich ein Bug in Delphi 11. |
AW: Idftp nur Ordner auflisten funktioniert nicht
Zitat:
|
AW: Idftp nur Ordner auflisten funktioniert nicht
Zitat:
![]() gibt es ein Zip Archiv mit der aktuellen Version. Im Projekt muss dann nur der Suchpfad um die Verzeichnisse Lib/Core, Protocols und System erweitert werden. Dadurch ist keine Package-Installation notwendig. P.s. Wie steht die Property Passive der TIdFtp Komponente, auf True oder False? Möglicherweise ist es dieser Fehler: ![]() Darin wird als Workaround genannt, Passive auf True zu setzen. Es ist aber noch unklar, warum erst ab Delphi 11 ein Timeout kommt. |
AW: Idftp nur Ordner auflisten funktioniert nicht
Zitat:
Ich hoffe, dass hier Indy nochmal nachbessert. Aber meine Funktion läuft damit nun erst einmal. |
AW: Idftp nur Ordner auflisten funktioniert nicht
Zitat:
Ob es ein Bug in Indy ist, kann man nur vermuten - die ![]() |
AW: Idftp nur Ordner auflisten funktioniert nicht
Zitat:
Auf Anfrage von Remy Lebeau Das Ticket wurde aktualisiert und einige Details hinzugefügt, er bat darum hier (auf diesen Post) zu antworten auf das Ticket zu verlinken: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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