Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit idFTP (https://www.delphipraxis.net/84980-problem-mit-idftp.html)

J.P. 24. Jan 2007 09:19


Problem mit idFTP
 
Morgen!
Ich habe ein FTP Programm geschrieben. Funktioniert auch alles schön und gut, aber die Dateien die ich herunterlade haben auf der Festplatte nur eine Größe von 0 Byte.
Nur der Dateiname steht da, aber die Datei selber steht da nicht? Ich habs mit den Indy komponenten probiert (hab damit aber fast keine Erfahrung). Mit idFTP.
Ich hab schon alles mögliche probiert umzustellen, aber hilft nichts.

Schonmal danke für eure antworten...

Klaus01 24. Jan 2007 09:25

Re: Problem mit idFTP
 
Ähm, wie wäre es mit etwas Code?

Grüße
Klaus

J.P. 24. Jan 2007 09:47

Re: Problem mit idFTP
 
Delphi-Quellcode:
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if (edit1.Text='') and (edit2.Text = '') then showmessage('Bitte tragen sie ihre Daten ein!') else
 begin
  timer1.Interval:=strtoint(edit6.Text)*1000;
  timer1.Enabled:=true
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 try
  idftp1.Get(edit3.Text,edit7.Text);
 except
  timer1.Enabled:=false;
  showmessage('Ein Fehler ist aufgetreten, die Aktion wird abgebrochen');
 end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
 try
  idftp1.Put(edit10.text,edit4.text);
 except
  timer2.Enabled:=false;
  showmessage('Ein Fehler ist aufgetreten, die Aktion wird abgebrochen');
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if (edit1.Text='') and (edit2.Text = '') then showmessage('Bitte tragen sie ihre Daten ein!') else
 begin
  timer2.interval:=strtoint(edit8.Text)*1000;
  timer2.Enabled:=true;
 end;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
 try
  idftp1.Delete(edit5.Text);
 except
  timer3.Enabled:=false;
  showmessage('Ein Fehler ist aufgetreten, die Aktion wird abgebrochen');
 end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 try
  timer1.Enabled:=false;
  timer2.Enabled:=false;
  timer3.Enabled:=false;
 finally
  showmessage('abgebrochen!');
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if (edit1.Text='') and (edit2.Text = '') then showmessage('Bitte tragen sie ihre Daten ein!') else
 begin
  timer3.interval:=strtoint(edit9.Text)*1000;
  timer3.Enabled:=true;
 end;

end;
procedure TForm1.Button4Click(Sender: TObject);
begin
 try
  idftp1.SocksInfo.Host:=edit11.Text;
  idftp1.SocksInfo.Password:=edit2.Text;
  idftp1.SocksInfo.UserID:=edit1.Text;
  idftp1.Host:=edit11.Text;
  idftp1.Password:=edit2.Text;
  idftp1.user:=edit1.Text;
 except
  showmessage('Es ist ein Fehler aufgetreten');
 end;
end;

end.
Ich hoffe es ist nicht zuviel, das ist alles an Quellcode den ich geschrieben hab...

p0w3r5tr34m3r 24. Jan 2007 10:20

Re: Problem mit idFTP
 
Hi,

darf man fragen wieso, du Put() und Get() über Timer laufen lässt? Einmal Put, Get, ... ausgeführt sollte doch eigentlich reichen, oder irre ich mich da ? Habe bisher noch nicht allzuviel mit Indy gearbeitet.


Mit freundlichen Grüßen

Klaus01 24. Jan 2007 10:36

Re: Problem mit idFTP
 
Die Sache mit den Timern ist schon merkwürdig.

Was passiert denn, wenn das Interval abgelaufen ist? Wird der Transfer abgebrochen?

Was passiert wenn der Timer beim nächsten Mal wieder startet? Wird ein neuer FTP Transfer eingeleitet, wird die
Zieldatei überschrieben?

Ich würde Dir raten, die Konzeption noch einmal zu überdenken.
Ein gutes Tutorial zu dem Indy FTP Client kannst Du hier finden - > http://www.dsdt.info/tutorials/indy/?page=4

Grüße
Klaus

J.P. 24. Jan 2007 10:43

Re: Problem mit idFTP
 
Das soll nach einer bestimmten Zeit halt wiederholt werden, desswegen die Timer...
Ich werd mir das mal durchlesen, danke.

SirThornberry 24. Jan 2007 11:46

Re: Problem mit idFTP
 
wie hoch ist der Interval von Timer1? Du solltest beim betreten des OnTimerEvents diesen abschalten sonst kann es passieren das eine Datei heruntergeladen wird und während diese noch lädt wird das Event erneug aufgerufen und lädt die Datei auch wieder runter. Somit überschneiden sich 2 Downloads und nichts klappt mehr.

J.P. 24. Jan 2007 18:38

Re: Problem mit idFTP
 
Ich habs mit 5 ausprobiert... raus kam dann nur diese 0 byte Datei... eigentlich war das nur der Dateiname... Liegt das vll daran, dass ich die Datei nicht als Stream runterlade? Wenn ja, dann weiß ich nicht wie ich diesen Stream abspeichern soll...
Hoffentlich weiß jemand Rat..

PS: Die Datei hatte nur 7,5 Kb, also dürften die 5 kein problem sein.

DataCool 25. Jan 2007 12:57

Re: Problem mit idFTP
 
Hi,

5 was Millisekunden oder 5 Sek. ?
Die Konstruktion mit den Timern ist fürn Ars...
Kannste lieber gleich richtig mit Threads machen, wenn Du mehere Dateien hoch und runterladen willst, dann geht das sogar gleichzeitig.

Einen Stream speicherst Du mit der Klasse TFileStream !

Brauchst Du aber gar nicht !

Delphi-Quellcode:
lab_Action.Caption := 'Download : '+strFile;
try
  BytesToTransfer := IdFTP1.Size(strFile);
  IdFTP1.Get(strFile,sTargetFile,true);
except
  bError := true;
end;
strFile = Dateiname auf dem Server
sTargetFile = Lokaler Dateiname(Kompletter Pfad)

Greetz DataCool

J.P. 26. Jan 2007 11:42

Re: Problem mit idFTP
 
thx... ich werds mal ausprobieren. Das waren 5 sekunden. Ich hab das im Quelltext auch mal 1000 genommen (die Milisekunden).
Vielen Dank.

J.P.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 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