![]() |
verbleibende Zeit eines Downloads?
Wie könnte man die Dauer eines Downloads feststellen und während eines Downloads stänig aktualisieren?
|
Re: verbleibende Zeit eines Downloads?
Du musst nur wissen, wie groß die Datei ist, die du runterlädst, und die aktuelle Geschwindigkeit.
|
Re: verbleibende Zeit eines Downloads?
|
Re: verbleibende Zeit eines Downloads?
So etwas in dieser Richtung habe ich mir schon fast gedacht. Die Dateigrösse und die aktuelle Geschwindigkeit ist mir bekannt. Ich lasse diese Werte auf Labels ausgeben.
|
Re: verbleibende Zeit eines Downloads?
Irgendwie wil garnichts klappen. Ich poste mal kurz die entscheidenen Stellen:
Delphi-Quellcode:
private
{ Private-Deklarationen } FTime: Longword; FBytes: Longword; ... procedure TLizenz.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin FTime := GetTickCount; FBytes := 0; end; procedure TLizenz.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin if (GetTickCount - FTime) >= 1000 then begin //Downloadgeschwindigkeit label8.caption := Format('%.2f KB/s', [(AWorkCount - FBytes) / (GetTickCount - FTime)]); FTime := GetTickCount; FBytes := AWorkCount; //bereits geladen von Gesamtgrösse Label6.Caption := 'Download läuft ! '+' ('+inttostr(AWorkCount div 1024)+' kB von '+inttostr(IdHTTP1.Response.ContentStream.Size div 1024)+' kB)'; Gauge1.Progress := AWorkCount*100 div IdHTTP1.Response.ContentStream.Size; application.ProcessMessages; end; end; |
Re: verbleibende Zeit eines Downloads?
Zitat:
Delphi-Quellcode:
Gruß
Gauge1.Max := IdHTTP1.Response.ContentStream.Size;
Gauge1.Progress := AWorkCount; |
Re: verbleibende Zeit eines Downloads?
Und wie übergebe ich dies zb. an ein Label?
|
Re: verbleibende Zeit eines Downloads?
Ich dachte das hast du bereits ?
Delphi-Quellcode:
Label6.Caption := 'Download läuft ! '+' ('+inttostr(AWorkCount div 1024)+' kB von '+inttostr(IdHTTP1.Response.ContentStream.Size div 1024)+' kB)';
|
Re: verbleibende Zeit eines Downloads?
Dies gibt mir doch die bereits geladenen Bytes aus. Jedoch nicht die restlich verbleibene Zeit.
|
Re: verbleibende Zeit eines Downloads?
Delphi-Quellcode:
Gruß
(IdHTTP1.Response.ContentStream.Size - AWorkCount) div iAktelleDownloadGeschwindigkeit
|
Re: verbleibende Zeit eines Downloads?
So, jetzt ist die Verwirrung komplett.
|
Re: verbleibende Zeit eines Downloads?
Was verstehst du genau nicht ?
Du nimmst die Größe deiner zu ladenden Datei, ziehst das bereits heruntergeladene ab, und teilst es letztendlich durch die aktuelle Downloadgeschwindigkeit. Gruß |
Re: verbleibende Zeit eines Downloads?
Delphi-Quellcode:
gibt eine inkompatibilität zwischen String und Int64. Das verstehe ich nicht.
Label10.Caption:=(IdHTTP1.Response.ContentStream.Size - AWorkCount) div StrToInt(Label8.Caption);
|
Re: verbleibende Zeit eines Downloads?
Du bekommst eine Zahl zurück.
Diese musst du in einen String konvertieren, damit du diesen dann dem Label zuweisen kannst.
Delphi-Quellcode:
IntToStr()
|
Re: verbleibende Zeit eines Downloads?
Da bin ich bereits auch hinter gestiegen. Nun schließt sich der Kreis mit der Frage: Wie formatiere ich nun den gewonnenen Wert in Stunden, Minuten Sekunden?
|
Re: verbleibende Zeit eines Downloads?
vielleicht mal die suche beschäftigen ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 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