![]() |
Indy FTP Exception
Morgen!
Habe gerade ein dickes Problem, und zwar ich lege ich mit meinem Programm verschiedene Ordner auf einem FTP an. Das Verzeichnis wird auch angelegt doch leider kommt dann eine Fehlermeldung "Directory Created" und das Programm stürzt ab.. Woran liegt das muss ich noch irgendetwas übergeben bzw. etwas einstellen?? Hier mein Code..
Code:
Danke im voraus...
...
ftp.Connect(); if ftp.Connected then begin ftp.ChangeDir('/gallery'); ftp.TransferType:= ftBinary; try ftp.MakeDir(ng_2.galleryname.Caption); except showmessage('-'); end; c_makefolder.Checked:=True; ftp.ChangeDir('/gallery/'+ng_2.galleryname.Caption); try ftp.MakeDir('thumbs'); except showmessage('-'); end; end; .... mfg Robert |
Nachtrag:
Ich habe das Programm mal mit andern FTP Daten gestartet (Schlund+Partner FTP) das funktioniert alles reibungslos! Doch auf dem andern (Strato FTP) kommt diese Meldung :?: :?: :?: Liegt also nicht an mir:!: Hat damit schon jemand Erfahrungen? Danke im Voraus! |
Welche Fehlermeldung kommt denn ?
Hilfreich wäre ein Protokollausschnitt mit den Server Meldungen. Manche FTP Komponenten parsen das FTP Protokoll nicht richtig. Zusätzlich entstehen Probleme mit verschiedenen FTP Servern. In Deinem Falle z.B. kann es sein das ein Useraccount zwar Ordner anlegen darf, dieser neue Ordner aber dann keine Zugriffsrechte erbt. Anlegen ist also möglich, Zugriff aber nicht ! Gruß Hagen |
Die meiner Meinung nach schwachsinne Fehlermeldung lautet:
Directory created |
Hm, der FTP-Returncode wäre hilfreicher.
Es müsste aber ein 2xx Code sein, und diese sind keine Fehlercodes sondern Bestätigungscodes das der Server die Aktion erfolgreich ausgeführt hat. Es sieht wohl so aus das der FTP Server eine zusätzliche Message nachschickt, und deine FTP Komponente damit nicht korrekt umgehen kann. Falls es die aus dem INDY Package ist dann kann ich bestätigen das diese teilweise nicht korrekt parsed. es müsste 257 Directory created sein. Verschiedene Server schicken zusätzliche Infos mit, etwa so 257-"PATHNAME" created 257 Directory created Genau hier haben aber einige Komponenten Probleme, da sie das FTP Protokoll viel zu starr und unflexibel parsen. Ich habe einige FTP Komponenten getestet und mich letzendlich für zwei Wege entschieden: 1.) auf Palms und Windows per Sockets selber das FTP Protokoll umgesetzt, ist eigentlich nicht so schwierig 2.) auf Windows die FTPxxxx Funktionien benutzt Nun, es spricht auf Server Seite aber nichts dagegen einen eigenen Messagecode zu benutzen. Solange er im Bereich von 200-299 liegt, heisst das der Befehl ausgeführt wurde. Die Probleme mit den FTP Komponenten entstehen aber genau in diesem Moment. Sie parsen auf einen festen Returncode, z.b. eben 257, statt zu checken ob der Code zwichen 200-299 liegt. Diese "Fehlinterpretation" des FTP protokolls entsteht durch die Protokolldefinition in den RFC's selber. Dort sind eine Art von Beispielstruktogrammen abgebildet die dazu führen das man annehmen muß das exakt 257 vom Server als Bestätigung geschickt werden muß. Ich habe einige FTP Sourcen studiert und alle gehen von dieser falschen Annahme aus. Falls deine FTP Komponente den geparsten Returncode zwischenspeichert, und dann erst die Exception raised, kannste ja im SEH diesen Code selber auswerten. Falls er zwischen 200-299 liegt ist alles ok. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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