AGB  ·  Datenschutz  ·  Impressum  







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

FTP.List fehler

Ein Thema von dioony · begonnen am 18. Apr 2005 · letzter Beitrag vom 16. Mai 2007
Antwort Antwort
dioony

Registriert seit: 18. Apr 2005
Ort: Oldenburg
18 Beiträge
 
Delphi 6 Enterprise
 
#1

FTP.List fehler

  Alt 18. Apr 2005, 18:11
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:

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;
ausgeführt wird dieser teil in Form1...
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: FTP.List fehler

  Alt 19. Apr 2005, 11:45
Vielleicht hilft dir das weiter:
Delphi-Quellcode:
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;
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.

Grüße vom marabu
  Mit Zitat antworten Zitat
dioony

Registriert seit: 18. Apr 2005
Ort: Oldenburg
18 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: FTP.List fehler

  Alt 20. Apr 2005, 12:49
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
  Mit Zitat antworten Zitat
japetos

Registriert seit: 30. Aug 2005
Ort: Montreal
58 Beiträge
 
#4

Re: FTP.List fehler

  Alt 21. Sep 2005, 15:52
@diooney

Hat das jetzt geklappt?
wenn ja, wie hast Du es gemacht?

  Mit Zitat antworten Zitat
XzenTorXz

Registriert seit: 29. Jun 2006
Ort: 127.0.0.1
13 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: FTP.List fehler

  Alt 19. Aug 2006, 04:04
Ich hab das selbe Problem. Bei:
List(sl, '*', true) 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)
aber:
List(sl, '*', false) funktioniert nicht, da zeigt er bei mir nur dateien an.
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 !?)
  Mit Zitat antworten Zitat
databoss

Registriert seit: 2. Mär 2006
Ort: Hamburg
3 Beiträge
 
#6

Re: FTP.List fehler

  Alt 31. Aug 2006, 18:12
Hi!

Zur Info: Bei geht das mit Indy 10 und D7 Ep auch nie...

Delphi-Quellcode:
var
  List : TStringList;
  FTPList: TIdFtpListItems;
begin
  List:=TStringList.Create;
  idFTP1.List(List,'',True);
  FTPList:= idFTP1.DirectoryListing;
end;
oder auch mit

idFTP1.List(List,'*',True); FTPList.Count ist leider immer = 0

Nur List selber parsen klappt!

Florian
Florian
Es gibt nichts Gutes - außer man testet es...
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#7

Re: FTP.List fehler

  Alt 31. Aug 2006, 18:41
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: HS-Uploader im Bereich Software.

mfg
Herbert
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#8

Re: FTP.List fehler

  Alt 16. Mai 2007, 11:30
Um anderen Suchenden zu helfen, falls es dennoch nicht klappt:

Lösung unter:
http://www.delphipraxis.net/internal...rectorylisting

Zitat:
TIdFTP by default registers directory listing parsers for only the NLST and MLST formats. If the FTP server is returning a format other than those, you need to include the correct unit with the correct parser in your implementation uses clause. Like:

uses IdFTPListParserWindowsNT;


Or, as an alternative, you can include the IdAllFTPListParsers unit to get them all in one swipe.
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:35 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