Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi INDY ftp.list problem (https://www.delphipraxis.net/145759-indy-ftp-list-problem.html)

marteng57 7. Jan 2010 22:56


INDY ftp.list problem
 
Hallo,

wollte (in D 2009) mal schnell einen ftp-Zugriff realisieren und stehe auf dem Schlauch

Delphi-Quellcode:
  tOrders := TStringList.Create;
  IdFTP1.Connect;
  if IdFTP1.Connected then
  begin
    IdFTP1.ChangeDir('/IN');
    try
      IdFTP1.List(tOrders);
    except
      // Fehlerbehandlung
    end;
  end;
Tja und tOrders ist immer leer.
Die Analyse sagt dass ich auf Connetion Closed Gracefully stosse, das Verzeichnis enthält aber Dateien und im filezilla geht es ohne Probleme
Wieso geht die Connection flöten oder was sehe ich nicht?

Danke für Eure Hilfe

Assertor 8. Jan 2010 08:11

Re: INDY ftp.list problem
 
Hallo Martin,

Zitat:

Zitat von marteng57
Tja und tOrders ist immer leer.
Die Analyse sagt dass ich auf Connetion Closed Gracefully stosse, das Verzeichnis enthält aber Dateien und im filezilla geht es ohne Probleme
Wieso geht die Connection flöten oder was sehe ich nicht?

Hmm, davon höre ich das erste mal. Was für ein Server ist denn die Gegenstelle, irgendwas exotisches? Binde sonst mal bitte IdAllFTPListParsers in die Unit ein. Ich nutze z.B. FTP auch mit D2009 und D2010, .List ging sowohl mit der Release Version als auch der aktuellen SVN Version...

Kannst Du auch mal per Netzwerk Sniffer (SmartSnif, Wireshark o.ä.) gucken, was passiert?

Gruß Assertor

Klaus01 8. Jan 2010 08:39

Re: INDY ftp.list problem
 
Guten Morgen,

und die Zugangsdaten (Username, Passwort) stimmen?

Grüße
Klaus

GHorn 8. Jan 2010 08:44

Re: INDY ftp.list problem
 
Hi,

wie ich das sehe gibt es von List in IdFTP.PAS zwei überladene Funktionen:

Delphi-Quellcode:
procedure TIdFTP.List;
begin
  List(nil);
end;

procedure TIdFTP.List(const ASpecifier: string; ADetails: Boolean);
begin
  List(nil, ASpecifier, ADetails);
end;


Ich habe das so gemacht um eine Datei einzulesen (D2009):

Delphi-Quellcode:
var
  TFS: TFileStream;
begin
  TFS := TFileStream.Create(cFTPSupplierFile, fmCreate);
  try
    // Verbinden:
    try
      IdFTP1.Connect;
      Application.ProcessMessages;
      IdFTP1.List;
      IdFTP1.Get(cMyFile, TFS, False);
      TFS.Seek(0, soFromBeginning);  // an den Anfang setzen
      .....
    except
      Result := False;
    end;
  finally
    ....
  end;
end;

Um ein Verzeichnis einzulesen, schau Dir mal die Property "ListResult" an.

Gruß
Gerald

marteng57 8. Jan 2010 08:54

Re: INDY ftp.list problem
 
Hallo,

vielen Dank für die Hinweise.

@Klaus: Die Zugangsdaten stimmen, der Connect läuft sauber, auch der Wechsel der Verzeichnisse, kann ich auch über retrieveDir oder so anzeigen lassen

@Assertor: die IdAllFTPListParsers habe ich eingebunden, keine Änderung des Verhaltens

@Gerald: auch ListResults liefert keine Ergebnisse

Für mich sieht es so aus, als ob durch die Listanfrage die Connection geschlossen würde, die Art des Servers kenne ich nicht. Es ist der Zugang eines Dienstleisters zur Übertragung von EANCOM Daten und es gibt viele andere User die offensichtlich kein Problem haben.

Gruß
Martin

Klaus01 8. Jan 2010 09:07

Re: INDY ftp.list problem
 
Hallo Martin,

bekommst Du die Exception nur zu sehen,
wenn Du Dein Programm in der IDE laufen lässt?
Wie schaut es es aus, wenn Du es ausserhalb der IDE startest.

Hier noch ein Thread mit ähnlichem Thema.

Grüße
Klaus

marteng57 8. Jan 2010 09:37

Re: INDY ftp.list problem
 
Klaus, danke für den Hinweis.

Die Sache mit dem Debugger hatte ich schon gesehen, steht ja auch in der Source von Indy gut beschrieben drin.
Dein Verweis auf den anderen Thread entnehme ich, dass es sehr wohl ein Problem der Gegenseite sein könnte.
Meine Erkundungen haben ergeben dass auf der Gegenseite ein Filezilla-Server sitzt, leider ist der dafür Zuständige erkrankt.

Gruß
Martin

marteng57 8. Jan 2010 18:49

Re: INDY ftp.list problem
 
:duck:

Auch ein anderer Server reagiert gleich.

Wer schafft es mit Delphi 2009 ein Verzeichnis eines FTP-Servers auszulesen?

Wäre für jeden Hinweis dankbar.

Gruß
Martin

marteng57 8. Jan 2010 19:42

Re: INDY ftp.list problem
 
Hallo,

noch ein Hinweis,

das Abholen einer Datei mittels ftp.Get funktioniert einwandfrei.

Es ist also kein Zugangsthema oder so. Lediglich das Abrufen der überhaupt im Verzeichnis vorhandenen Dateien funktioniert in keinster Weise.
Nutzt das denn niemand? Es scheint mir wirklich ein Problem von Indy zu sein. :wall:

Gruß
Martin

Morphie 8. Jan 2010 20:55

Re: INDY ftp.list problem
 
Also ich kann ohne Probleme mit Delphi 2009 ein List ausführen...
Liegt dein Fehler vielleicht in dem Slash beim Changedir?
IdFTP1.ChangeDir('/IN');

also beim code (einfach so dahin geklatscht, keine Fehlerbehandlung) sieht so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: TStringList;
  i: integer;
begin
  s:=TStringList.Create;
  idftp1.Connect;
  idftp1.ChangeDir('html');
  idftp1.List(s);
  for i := 0 to s.Count - 1 do
  begin
    showmessage(s[i]);
  end;

end;
Edit:
FTP Server: vsFTPd 2.0.7
Zielsystem: Debian

Edit2: ich benutze übrigends die Indy 10.2.5


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Seite 1 von 3  1 23      

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