![]() |
Formular friert beim FTP-Download ein!
HI Leute,
ich möchte gern eine Datei (ca. 5MB groß, dadurch dauert der Download etwas länger) von einem FTP-Server downloaden. Das funktioniert auch, aber mein Formular friert dabei ein und erwacht erst wieder, wenn der Download komplett ist. Der ProgressBar bleibt leer. Ich habe neben dem IdFTP auch ein IdAntiFreeze auf meinem Formular, bewirkt aber nichts! :wall: Hier folgt der Code:
Delphi-Quellcode:
Kann mir jemand helfen?
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer); begin ProgressBar1.Max := AWorkCountMax; ProgressBar1.Position := 0; end; procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; end; procedure TForm1.Button1Click(Sender: TObject); begin IdFTP1.Host := 'ftp.domain.com'; IdFTP1.Username := 'anonymous'; IdFTP1.Password := ''; IdFTP1.Connect; IdFTP1.ChangeDir('/'); IdFTP1.Get('xyz.exe','C:\ttt\xyz.exe',true); IdFTP1.Quit; IdFTP1.Disconnect; end; |
Re: Formular friert beim FTP-Download ein!
HI!
Herzlich Willkommen in der DP. Mach vielleicht irgendwo ein Application.Processmessages rein. Zur besseren Lesbarkeit: Es gibt hiuer sog. Delphi-Tags, einfach den gesamten Code markieren und oberhalb des Textfeldes auf den "Delphi-Code" Button klicken. Zum Editieren des Beitrags ist oben rechts eine Schaltfläche ("Edit") Ciao fkerber |
Re: Formular friert beim FTP-Download ein!
Hi ickehausen,
erstmal Herzlich Willkommen in der DP. :dp: So wie ich sehe verwendest du die Indy's. Da gibts eine Komponente names "IdAntiFreeze". Zufinden unter "Indy-Misc". Einfach auf die Form machen. Dann funtzt es. |
Re: Formular friert beim FTP-Download ein!
Entweder packst du das ganze in einen separaten Thread oder du probierst mal diese Indy AntiFreeze Komponente aus.
|
Re: Formular friert beim FTP-Download ein!
Hi!
Zitat:
Ciao fkerber |
Re: Formular friert beim FTP-Download ein!
Ups. Ist es auch richtig eingestellt? Hast du mal an den Einstellungen etwas rumprobiert?
|
Re: Formular friert beim FTP-Download ein!
Hi,
danke für die Tips, auch mit dem Delphi-Code, bin im Forum halt neu und außerdem kasser Delphi-Neuling. Jetzt habe ich in einem anderen Beitrag gelesen, dass ich beim AntiFreeze den Wert onlywhenidle auf false stellen muß. Das Formular friert nicht mehr ein, aber mein ProgressBar zeigt immer noch nichts an. Was mache ich flasch?
Delphi-Quellcode:
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer); begin ProgressBar1.Max := AWorkCountMax; ProgressBar1.Position := 0; end; procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; end; |
Re: Formular friert beim FTP-Download ein!
Lad mal eine größere Datei runter, mehrer MB die paar Kilobytchen sind ja schneller unter als du kucken kannst. Und ich nehme mal an du hast DSL. Mit Modem oder ISDN würde man aus Kostengründen so ein Projekt ja gar nicht erst anfangen. ;)
|
Re: Formular friert beim FTP-Download ein!
Zitat:
|
Re: Formular friert beim FTP-Download ein!
Hi Luckie,
ich brauche schon ein bis zwei Minuten um die 5 MB down zu loaden, trotz DSL. Der ProgressBar zeigt einfach nichts an! Ich kann den Fehler jetzt aber eingrenzen; der Wert von AWorkCountMax ist immer 0! :wall: |
Re: Formular friert beim FTP-Download ein!
Zitat:
@ickehausen: Hast du die Ereignisse auch mit der Komponente im OH verbunden? Oder probier mal folgendes:
Code:
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; [b]Progressbar1.Repaint;[/b] end; |
Re: Formular friert beim FTP-Download ein!
Zitat:
|
Re: Formular friert beim FTP-Download ein!
Zitat:
Aber, warum bekomme ich null zurück? |
Re: Formular friert beim FTP-Download ein!
Hi...
Der Source für die Statusbar war so schon richtig...:
Delphi-Quellcode:
Hast du denn auch bei deinem idFTP1 die Ereignisse OnWorkBegin, OnWork und OnWorkEnd verlinkt?
procedure Tbg3.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer); ProgressBar1.Max := AWorkCountMax; end; procedure Tbg3.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; end; procedure Tbg3.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin ProgressBar1.Position := 0; end; Und ist das idAntiFreeze auch Aktiv? |
Re: Formular friert beim FTP-Download ein!
Zitat:
vielen Dank für Dein Tip. Ich habe über das Wochenende die Lösung meines Problems gefunden. Ich bekamm immer den Wert 0 für die AWorkCountMax zurück. Jetzt habe ich in den Demos zu INDY die Lösung gefunden:
Delphi-Quellcode:
Allen vielen Dank für Ihre Ratschläge.
private
{ Private-Deklarationen } BytesToTransfer: LongWord; . . . procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin if AWorkCountMax > 0 then ProgressBar1.Max := AWorkCountMax else ProgressBar1.Max := BytesToTransfer; ProgressBar1.Position := 0; label1.Caption := IntToStr(ProgressBar1.Max); end; :love: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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