AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Idftp nur Ordner auflisten

Ein Thema von gee21 · begonnen am 13. Jun 2014 · letzter Beitrag vom 15. Nov 2021
Antwort Antwort
Seite 1 von 2  1 2      
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#1

Idftp nur Ordner auflisten

  Alt 13. Jun 2014, 00:21
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?
Robert
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Idftp nur Ordner auflisten

  Alt 13. Jun 2014, 03:29
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Idftp nur Ordner auflisten

  Alt 13. Jun 2014, 10:16
:-/ Vermutlich waren die schon schlau

Also wenn du Data meinst
IdFtp1.DirectoryListing.Items[I].Data Müsste ich da ja noch irgendwie den Namen raus filtern.


Und ansonsten habe ich noch versucht mit
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?
Robert
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Idftp nur Ordner auflisten

  Alt 13. Jun 2014, 10:28
Hast Du IdFTPList eingebunden?

idftp1.DirectoryListing.Items[i].ItemType=IdFTPList.ditDirectory;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Idftp nur Ordner auflisten

  Alt 13. Jun 2014, 10:32
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ß.
$2B or not $2B
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Idftp nur Ordner auflisten

  Alt 13. Jun 2014, 10:57
Achsoooooo. Danke euch allen.

Dachte list sei schon mit der idftp Komponente dabei... Jetzt geht's
Robert
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#7

Idftp nur Ordner auflisten funktioniert nicht

  Alt 12. Nov 2021, 20:29
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:
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;
Es kommt immer TimeOut nach der eingestellten Zeit, siehe unten weiteres Beispiel.
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;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras (13. Nov 2021 um 08:20 Uhr) Grund: erweitert
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Idftp nur Ordner auflisten funktioniert nicht

  Alt 13. Nov 2021, 08:31
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?
Um das zu prüfen wäre es möglich, die Indy Sourcen aus Delphi 10.4 im Delphi 11 Projekt einzubinden.

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.
Michael Justin

Geändert von mjustin (13. Nov 2021 um 08:33 Uhr)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#9

AW: Idftp nur Ordner auflisten funktioniert nicht

  Alt 13. Nov 2021, 09:01

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.
Wo gibt es denn die aktuellste Version?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Idftp nur Ordner auflisten funktioniert nicht

  Alt 13. Nov 2021, 09:30

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.
Wo gibt es denn die aktuellste Version?
Unter
https://github.com/IndySockets/Indy

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:
https://github.com/IndySockets/Indy/issues/377

Darin wird als Workaround genannt, Passive auf True zu setzen.
Es ist aber noch unklar, warum erst ab Delphi 11 ein Timeout kommt.
Michael Justin

Geändert von mjustin (13. Nov 2021 um 09:47 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz