Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit Indy-FTP (Verzögerung) (https://www.delphipraxis.net/69896-problem-mit-indy-ftp-verzoegerung.html)

Christian.Ossi 22. Mai 2006 01:13


Problem mit Indy-FTP (Verzögerung)
 
Wenn ich mit der idFTP-Komponente von Indy eine Datei ins Internet hochlade, wird der Programmablauf angehalten bis die Datei fertig hochgeladen ist.

Die Datei ist zwar nur paar hundert kilobyte groß, doch "stockt" das Programm - man kann keine Buttons mehr bedienen etc.

Kann man diesen Transfer irgendwie "abkoppeln" oder so gestalten, dass das Programm nicht hängt?!


Danke schonmal!

tn249 22. Mai 2006 01:34

Re: Problem mit Indy-FTP (Verzögerung)
 
Das beste ist du lagerst das in einen Thread aus.

Such mal nach TThread hier im Forum, bzw. in der Delphi-Hilfe.
Es gibt auch noch ein Tutorial auf Luckie seiner Seite (Link is in seiner Signatur zu finden).

Gruß
Thomas

TKC 22. Mai 2006 04:02

Re: Problem mit Indy-FTP (Verzögerung)
 
Hi,
hast du schon mal die IdAntifreeze Komponente auf deine Form gezogen ? :wink:

Christian.Ossi 22. Mai 2006 07:36

Re: Problem mit Indy-FTP (Verzögerung)
 
Ich hab jetzt die Komponente hinzugefügt. Muss ich da noch was einstellen oder reicht das, wenn sie einfach da ist?!
Kann ich da trotzdem die Datei "mit einmal" also ohne zerstückeln hochladen?
Das sieht nämlich nur so aus:

Delphi-Quellcode:
idFTP.Username:=List.Strings[0];
idFTP.Password:=List.Strings[1];
idFTP.Host:=List.Strings[2];
idFTP.Connect;
Try
idFTP.Put(Datei,OnlineDatei,False);
Finally
idFTP.Disconnect;
End;

Oder muss ich es anders programmieren, denn geholfen hat der Tipp bei mir leider nicht....

jakobwenzel 22. Mai 2006 07:54

Re: Problem mit Indy-FTP (Verzögerung)
 
Es geht ohne Hänger, indem man in dem Ereignis OnWork der idFTP ein
Delphi-Quellcode:
Application.ProcessMessages;
schreibt.

Christian.Ossi 22. Mai 2006 08:13

Re: Problem mit Indy-FTP (Verzögerung)
 
Das mit dem ProcessMessages im OnWork klappt schonmal.
Es hängt jetzt zumindest nicht mehr so wie vorher, dass man in der Zeit des Upload gar nichts mehr mit dem Programm anfangen kann.

Aber man merkt noch deutlich, dass er beschäftigt ist....soll heißen ich hab auf dem Form z.B. auch ne Uhr-Anzeige die von einem Timer aktualisiert wird--und enstsprechend "überspringt" die Uhr dann 2-3 Sekunden und der Programmablauf ist relativ langsam.

Gänzlich weg bekommen kann man das also nicht?

Klaus01 22. Mai 2006 08:18

Re: Problem mit Indy-FTP (Verzögerung)
 
ganz weg bekommst Du es mit Threads, wenn Du pro Upload/Downloadvorgang
einen separaten Thread startest. Wurde aber schon in einem Beitrag vorher
angemerkt.

Kleinere Aussetzer bekommst Du wenn Du dem idftp sagst, das er kleinere "Häppchen"
übertragen soll. Soweit ich das weiß geht das über den Buffer.

Grüße
Klaus

Christian.Ossi 22. Mai 2006 10:53

Re: Problem mit Indy-FTP (Verzögerung)
 
Habe es jetzt in einen Thread gepackt
Jedoch macht er nicht was im Thread steht?!?!

Deklarition
Delphi-Quellcode:
FTPUpload = Class(TThread)
Protected
Procedure Execute; Override;
Private
    { Private-Deklarationen }
    Target: ShortString;
    Remote: ShortString;
Public
    { Public-Deklarationen }
End;
Aufruf
Delphi-Quellcode:
FTPThread:=FTPUpload.Create(False);
FTPThread.Target:='Datei.txt';
FTPThread.Remote:='Datei1.txt';
Thread
Delphi-Quellcode:
Procedure FTPUpload.Execute;
Begin
Sleep(44);
If FTPACCESS.Text <> '' then
Begin
HF.FTPSocket.Username:=FTPACCESS.Strings[0];       //FTPACCESS enthält die Zugangsdaten
HF.FTPSocket.Password:=FTPACCESS.Strings[1];
HF.FTPSocket.Host:=FTPACCESS.Strings[2];
HF.FTPSocket.Connect;
Try
HF.FTPSocket.Put(Target,Remote,False);
Finally
HF.FTPSocket.Disconnect;
End;
End;
DeleteFile(Target);
End;
EDIT: HF ist mein Hauptfenster (also das Stamm-Formular) --> da hab ich ja die Indy-Objekte liegen

Klaus01 22. Mai 2006 11:02

Re: Problem mit Indy-FTP (Verzögerung)
 
Was für'n Fehler bekommst Du denn?

Kannst Du den Client nicht zur Laufzeit erzeugen?
Hier ein Beispiel dazu: http://groups.google.de/group/comp.l...d196a2ca793151

Grüße
Klaus

Christian.Ossi 22. Mai 2006 11:31

Re: Problem mit Indy-FTP (Verzögerung)
 
Danke nochmal an alle! Es funktioniert jetzt einwandfrei und ohne den kleinsten Ruckler - aber am Upload erkennt man ja, dass er hochlädt....

Es war noch ein kleiner Fehler im TStringList - da stand das Create an der falschen Stelle und somit wurden nie die Zugangsdaten im FTPACCESS übergeben!

Ein Hoch auf den Thread *lol*


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