![]() |
Fortschrittsanzeige in ProgressBar
Hallo :)
Ich habe folgendes Problem: Ich lade eine txt Datei mit Hilfe der Indy Komponente (in Delphi 2009) herunter. Jetzt will ich diesen Fortschritt des Herunderladens in einer ProgressBar anzeigen lassen, Ich habe eine schöne Anleitung gefunden: -> ![]() Habe soweit alles gemacht wie beschrieben: Varibalen (Global)
Delphi-Quellcode:
var
Form1: TForm1; IdFTP1:TidFTP; STime:TDateTime; AverageSpeed:Extended; Das ist das Ereignis der OnWork (der IdFTP1)
Delphi-Quellcode:
Das ist die OnWorkBegin (der IdFTP1)
procedure TForm1.IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64); 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;
Delphi-Quellcode:
procedure TForm1.IdFTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64); begin ProgressBar1.Max := AWorkCountMax; ProgressBar1.Position := 0; STime:=now; end; Ich hatte Probleme das "AverageSpeed" einen Typ zuzuweisen. habe es schließlich auf Extended gesetzt (hatte ich gelesen gehabt war mir aber auch nicht sicher ob das geht). Wenn ich jetzt den Button klicke, der die txt dei runterladen soll, passiert nichts :( der Button macht folgendes:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin IdFTP1:=TIdftp.Create(Self); IdFTP1.Username := 'XXX'; IdFTP1.Password := 'XXX'; IdFTP1.Port := 21; IdFTP1.Host := 'XXX'; IdFTP1.Connect; IdFTP1.Get('marsas.txt', 'C:\WINDOWS\marsas.txt' , true, false); IdFTP1.Quit; end; Jetzt will ich den Button drücken und die ProgressBar soll halt abhängig von der Dateigröße den Fortschritt anzeigen. Wäre über jede Hilfe sehr Dankbar :) |
Re: Fortschrittsanzeige in ProgressBar
Hast du überhaupt Schreibrechte im Windowsverzeichnis, also kann die datei überhaupt erstellt werden? sind die Ereignisse der Komponente zugeordnet? Hast du den Code schon nmal debuggt? Springt er überhaupt in das Ereignis rein? Wie groß ist die Textdatei?
|
Re: Fortschrittsanzeige in ProgressBar
Außerdem: AWorkCountMax kann 0 sein ;)
|
Re: Fortschrittsanzeige in ProgressBar
-> Die datei schreibt er, das klappt alles, kann sie auch ändern
-> Über die Ereigniszuordnung habe ich mal was gelesen, weiß aber nicht wie das geht. -> Datei ist 4,00kb groß, könnte Sie zum Testen größer machen |
Re: Fortschrittsanzeige in ProgressBar
Zitat:
Zitat:
Wäre wohl sinnvoll. |
Re: Fortschrittsanzeige in ProgressBar
Hier habe ich das erstellt:
![]() Habe doppel neben das frei Feld jeweils geklickt. |
Re: Fortschrittsanzeige in ProgressBar
Ja und was passiert jetzt mit größeren dateien? Hast du das Ereigniss mal debuggt?
Es ist irgendwie ziemlich kontraprdoktiv, wenn man dir alles aus der Nase ziehen muss. |
Re: Fortschrittsanzeige in ProgressBar
ALso programm habe ich gestartet, aber es werden keine Fehler angezeigt.
datei ist jetzt etwas über 1mb was man jetzt schon shene müsste beim hochladen. |
Re: Fortschrittsanzeige in ProgressBar
man sieht aber nichts
|
Re: Fortschrittsanzeige in ProgressBar
Du sollst es nicht nur einfach starten. Du sollst den Code der Ereignissprozedur debuggen! Setz da mal einen Haltepunkt und dann guck mal weiter mit F7 und guck dir die Werte der Variablen an.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 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