AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdFTP DirectoryListing
Thema durchsuchen
Ansicht
Themen-Optionen

IdFTP DirectoryListing

Ein Thema von Killer · begonnen am 19. Okt 2005 · letzter Beitrag vom 27. Nov 2005
Antwort Antwort
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#1

IdFTP DirectoryListing

  Alt 19. Okt 2005, 19:34
Hallo folgendes Problem:
Ich hab mithilfe der IdFTP (Indy 10) Komponente einen kleinen Client gebaut, allerdings stehe ich momentan noch vor einem Problem. Und zwar hier mein bisheriger Code:
Delphi-Quellcode:
var
  vI: Integer;
  vItem: TListItem;
  vStrList: TStringList;
begin
  vStrList := TStringList.Create;

  IdFTP1.Connect();
  IdFTP1.List(vStrList,'',false);

  for vI := 0 to vStrList.Count -1 do begin
    vItem := listView1.Items.Add;
    vItem.Caption := vStrList[vI];
  end;

  Label1.Caption := IntToStr(IdFTP1.DirectoryListing.Count);
end;
Geht soweit auch alles, ich möchte aber die Details zu den Ordnern / Files auch haben.
Deshalb hab ich bei der Methode List den letzten Parameter auf true gestellt (ADetails), damit auch die Details erscheinen.
Wenn ich den Code so lasse, dann stehen im Ordner / Filenamen auch die anderen Details wie Größe / Owner. Naja deshalb hab ich ihn ein wenig umgebaut, wie er meiner Meinung nach funktionieren sollte.
Delphi-Quellcode:
var
  vI: Integer;
  vItem: TListItem;
  vStrList: TStringList;
begin
  vStrList := TStringList.Create;

  IdFTP1.Connect();
  IdFTP1.List(vStrList,'',true);

  for vI := 0 to IdFTP1.DirectoryListing.Count -1 do begin
    vItem := listView1.Items.Add;
    vItem.Caption := IdFTP1.DirectoryListing.Items[vI].FileName;
  end;

  Label1.Caption := IntToStr(IdFTP1.DirectoryListing.Count);
end;
Das komische is, dass DirectoryListing.Count, also die letzte Zeile 0 ausgibt, obwohl DirectoryListing ja gefüllt werden müsste. Hab sicherheitshalber auch in der Indy Hilfe nachgeschaut, da steht sobald auf DirectoryListing zugegriffen wird, wird die Struktur gefüllt. Scheint aber nicht so, irgendwo is da noch ein Hund begraben und ich find ihn ned

Achja wegen SuFu: Gibt zwar einige Threads zu dem Thema, allerdings keinen, der mir zu meinem Problem ne Antwort gibt. Ich weiß nicht mehr weiter. Ich weiß dass ich früher, als ich mit Delphi angefangen hab auch schon mal vor demselben Problem gestanden bin, wobei ich da dann irgendwo im INet eine Demo gefunden hatte, wo ne ListView zur Anzeige der Daten genommen wurde. Nur die find ich jetzt natürlich auch nicht mehr...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: IdFTP DirectoryListing

  Alt 19. Okt 2005, 19:39
das Liegt daran das beim abfragen des Directorylistings dieses geleert ist (daran erinnere ich mich zumindest irgendwie). Wenn du also zu einem späteren Zeitpunkt noch darauf zugreifen willst müsstest du dir das ganze in einer anderen Liste sichern oder schauen ob es ein Property etc. gibt um dies abzustellen.

Was ich allerdings nicht verstehe: du übergibst "vStrList" dem ListKommando aber verwendest die Liste dann nie. Desweiteren hab ich nicht gefunden wo du die Liste freigibst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: IdFTP DirectoryListing

  Alt 19. Okt 2005, 20:16
Das ist ein Überbleibel vom alten Codeteil. Habe das nun durch
IdFTP1.List; ersetzt, so ist es glaub ich auch gedacht und so brauch ich die StringList nicht mehr. Mit der Freigabe hast du auch Recht, das hab ich doch glatt vergessen (bin den Garbage Collector von C# gewohnt ). Allerdings kanns ja daran auch ned wirklich liegen.

Späterer Zeitpunkt - was heißt das konkret. Ich meine dieser Codeteil wird durchlaufen, wenn man auf den Button klickt und das Listing mache ich ja direkt nachdem verbunden wurde. Das einzige was ich dazu finden kann ist ein Ereignis namens OnCreateFTPList, kann ich mir auch nicht vorstellen...
  Mit Zitat antworten Zitat
marabu

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

Re: IdFTP DirectoryListing

  Alt 19. Okt 2005, 20:26
Hallo killer,

sieht gar nicht so aus, als hätte sich viel seit Indy9 geändert. Schau mal hier: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: IdFTP DirectoryListing

  Alt 19. Okt 2005, 20:59
Hmm ja den Thread kenn ich schon, über den bin ich mit der Suche schon gestolpert. Hilft mir auch nicht wirklich.
Aber langsam dämmerts mir, dass ich das Parsing wirklich selber vornehmen muss (Parsing der StringListe)...

Das komische is ich bin mir sicher dass ich es früher auch irgendwie geschafft habe. Hab nun 2 Server getestet, auf beiden wird die Struktur nicht gefüllt. Was ich auch nicht normal finde: ich hab hier nen Client, bei dem hat es mal funktioniert, allerdings kann ich den nicht kompilieren und ausführen, da Codeteile fehlen (irgendwelche pas Files)

Das einzig gute is, dass es auf dem betroffenen Server eigentlich keine Ordner und Files mit Leerzeichen gibt, also kann ich diese da schön trennen...das is aber auch das einzig gute

Edit:
Also bis aufs Datum konnte ichs jetzt gut trennen. Beim Datum is das Problem, dass das im US Format daherkommt also in etwa so:
Oct 19 16:12
Sep 20 18:18
Feb 23 2005 // <- wassn das da

Ich glaub die beste Möglichkeit is die einzelnen Strings, die ja bei den Leerzeichen getrennt wurden, wieder zusammenzusetzen, damit ich das Datum herkriege. Was das 2005 allerdings da soll frag ich mich sowieso. Laut FlashFXP haben alle Datums auch ne Uhrzeit hmm. Jemand nen Vorschlag?
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: IdFTP DirectoryListing

  Alt 19. Okt 2005, 23:04
Nur 1 Problem hab ich damit noch: Nun kann ich nicht mehr rausfinden, was ein Ordner und was ein File is und was ein Link is.
Naja Ordner und File is eigentlich ganz einfach, wenn die Funktion GetFileExt nix zurückgibt wirds nen Ordner sein denke ich mal. Nur beim Link wirds schwerer, weil ich nicht weiß, ob der ne bestimmte Extension hat...

Ich frage mich nur warum die blöde Collection leer ist. Das Datum krieg ich auch ned wirklich zusammen, weil des in nem komischen Format daherkommt und ich weder mit StrToDate noch EncodeDate weiterkomme. Muss ich wohl das Parse-Ereignis der Komponente selber mal genauer anschauen...

Edit:

Hab den Fehler per Zufall gefunden. Und zwar hab ich per Google gesucht und so ziemlich alle Seiten durchsucht die ich gefunden hatte. Hab mir danach die Groups noch durchgeschaut und bin dann grad vor 2min auf diesen Text gestoßen:
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.
Ok also gleich die Unit IdAllFTPListParsers eingebunden und siehe da: DirectoryListing wird endlich, endlich gefüllt. Ich bin wirklich heilfroh puuh deswegen nen ganzen Abend Aufwand. Komischerweise weiß das auch niemand...ich glaub ich bin / war sowieso nicht der einzige mit dem Problem.

Hab mir die ganze Zeit gedacht, kanns ja wohl nicht sein, dass bei allen 3 Servern die ich probiert hab nix daherkommt. Naja die Parser für LIST haben in dem Fall gefehlt

Wollte es euch nicht vorenthalten falls jemand mal dieses Problem hat / haben wird
  Mit Zitat antworten Zitat
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: IdFTP DirectoryListing

  Alt 20. Okt 2005, 07:55
Ich würde mich auf das DirectoyListing nicht verlassen.
In Indy10 werden noch nicht alle Server unterstützt sodass man die Stringliste mit bei LIST übergeben sollte, um sie notfalls selbst parsen zu können.
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: IdFTP DirectoryListing

  Alt 20. Okt 2005, 08:12
Naja wenn ich selber parsen muss, ist es schnell wieder eingebaut, sind ja nur wenige Zeilen. Allerdings ist die Kompatiblität der Indy Komponente laut einem Entwickler etwa bei 99%, weil da mehrere Parser eingebaut wurden. Der Grund warums bei mir nicht ging, war ja, dass der normale LIST Parser nicht eingebunden war, sondern nur die NLST und MLST Parser (die das Format meiner Server nicht unterstützt haben und deshalb kam auch nix).

Bei mir ist es im Prinzip so, dass im Prinzip einige Server mit dem Client verwendet werden, aber alle benutzen das gleiche Serverprogramm, weshalb das Listing bei allen funktionieren sollte, jetzt da es bei einem geht
  Mit Zitat antworten Zitat
dgmann

Registriert seit: 27. Nov 2005
Ort: Wuppertal
1 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: IdFTP DirectoryListing

  Alt 27. Nov 2005, 22:26
Hallo,
habe auch gut ein gutes Wochenende mit dem Problem gekämpft, bis ich auf diese NG gestoßen bin.
Danke, jetzt läufts
DGMANN
  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 07:40 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