![]() |
FTP Fortschritt > Progressbar
Delphi-Quellcode:
@Quelle:
procedure TMainForm.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer); begin ProgressBar1.Max := AWorkCountMax; ProgressBar1.Position := 0; end; procedure TMainForm.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); Var S: String; TotalTime: TDateTime; H, M, Sec, MS: Word; DLTime: Double; begin //Errechnen der Transfergeschwindigkeit: TotalTime := Now - STime; DecodeTime(TotalTime, H, M, Sec, MS); Sec := Sec + M * 60 + H * 3600; DLTime := Sec + MS / 1000; if DLTime > 0 then AverageSpeed := (AWorkCount / 1024) / DLTime; S := FormatFloat('0.00 KB/s', AverageSpeed); case AWorkMode of wmRead: StatusBar1.Panels[1].Text := 'Download speed ' + S; wmWrite: StatusBar1.Panels[1].Text := 'Uploade speed ' + S; end; //Aktualisieren der Fortschrittsanzeige: ProgressBar1.Position := AWorkCount; end; ![]() Laut diesem Code soll man sich den Fortschritt des Down-/ Uploades anzeigenlassen können sollen. Ja mein Problem dürfte nicht all zu Überraschend sein: Wieso funktioniert mein Code nicht?
Delphi-Quellcode:
mfg napsterXX
procedure TForm2.IdFTP2WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Integer); begin Form4.ProgressBar1.Max := AWorkCountMax; Form4.ProgressBar1.Position := 0; end; procedure TForm2.IdFTP2Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer); Var S: String; TotalTime: TDateTime; H, M, Sec, MS: Word; DLTime: Double; begin application.processMessages; //Errechnen der Transfergeschwindigkeit: TotalTime := Now - STime; DecodeTime(TotalTime, H, M, Sec, MS); Sec := Sec + M * 60 + H * 3600; DLTime := Sec + MS / 1000; if DLTime > 0 then AverageSpeed := (AWorkCount / 1024) / DLTime; S := FormatFloat('0.00 KB/s', AverageSpeed); case AWorkMode of wmRead: Form4.StatusBar1.Panels[1].Text := 'Download speed ' + S; wmWrite: Form4.StatusBar1.Panels[1].Text := 'Uploade speed ' + S; end; //Aktualisieren der Fortschrittsanzeige: Form4.ProgressBar1.Position := AWorkCount; end; |
Re: FTP Fortschritt > Progressbar
Hmm,
ich denke mal, dass Du vergessen hast, die Schäfchen zu zählen. :zwinker: Was geht denn nicht? Schon mal mit dem Debugger nachgeschaut? |
Re: FTP Fortschritt > Progressbar
Was nicht geht kann ich nicht so genau sagen. Also folgendes: Wenn ich mit dem Download einer Datei beginne bleibt mein kompletter PC stehen. Es hilft nur noch ein Neustart. Nichts anderes. Eigendlich hatte ich ja dieses das das Programm nicht einfriert:
application.processMessages; Als ich dies im OnWork Ereignis hatte ohne die Aktuallisierung der Progressbar ist es auch nicht eingefroren. Nun ja. Mehr kann ich nicht sagen. |
Re: FTP Fortschritt > Progressbar
Hmmm weiß nicht mehr genau ob das bei Indy genauso ist, aber bei Synapse ist der WorkCount nur die Größe des aktuellen Paketes, NICHT die Gesamtgröße zum aktuellen Zeitpunkt. Das müsste dann von Hand aufsummiert werden, sonst ist der Balken immer ganz am Anfang.
Zweitens sollte man Position und Max wohl eher nicht direkt auf die Größe setzen, soll ja vorkommen daß mal jemand eine größere Datei verschiebt, die den Rahmen dort sprengt. Besser in Prozente umrechnen. Wobei, wenn Indy eh maximal MaxInt als Größe kann auch wieder nicht so wichtig. Gegen das Hängend-Erscheinen gabs doch bei den Indys dieses TIdAntiFreeze? |
Re: FTP Fortschritt > Progressbar
Ja aber das funktionierte bei mir nicht.
|
Re: FTP Fortschritt > Progressbar
hm.. 2mal der gleiche Code, einmal mit Application.ProcessMessages, einmal ohne?
Machs oben doch auch mal hin.. oder lädst du mit IdFTP2? BTW: Das stehenbleiben des Threads ist klar.. du müsstest halt noch nen 2. Thread erstellen... greetz €: Lass dir doch mal WorkCount ausgeben, oder erhöh die Progressbar mal immer um 100 zum Test oder irgendsowas.. |
Re: FTP Fortschritt > Progressbar
So leutz habs nun anders gemacht und es geht. Naja Code kopieren ist wohl nicht das ware ;) hehe
|
Re: FTP Fortschritt > Progressbar
1. Bin ich nicht "leutz" :roll:
2. Wärst du so nett deinen Code zu Posten, damit noch andere von deinen geistigen Ergüssen profitieren können? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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