Hi,
in meinem Programm wird eine Datei gedownloadet und ich möchte gerne das der Speed und die Restzeit angezeigt wird.
Den Speed lass ich so errechnen:
[in OnWork]:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if (GetTickCount - FTime) >= 1000 then begin Speed := Format('%.2f KB/s', [(FWorkCount - FBytes) / (GetTickCount - FTime)]); oSpeed := Round((FWorkCount - FBytes) / (GetTickCount - FTime)); FTime := GetTickCount; FBytes := FWorkCount; end; |
[in OnWorkBegin]:
Delphi-Quelltext
1:
| FTime := GetTickCount; |
Es aktualisiert sich allerdings etwas langsam und ist meistens zu ungenau, sodass auch die Restzeit sehr schwankt.
Die Restzeit lasse ich so errechnen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function RestZeit: String; var Count, Size, toDownload, res: Integer; S: String; begin Count := Round(ProgressBar1.Position div 1024); S := floattostrF((round((Size/1024)*100))/100,fffixed,10,0); Size := StrToInt(s); toDownload := Size - Count; res := toDownload div oSpeed; res := res div 60; Result := inttostr(res); end; |
Die Restzeit ist allerdings nur in Minuten und ist, weil der Speed so ungenau ist, auch sehr ungenau. Weiß jemand wie ich den Speed genauer berechnen lassen kann und wie ich auch die Sekunden in der Restzeit anzeigen lassen kann? (z.B. Restzeit: 8:42)