Entwickler-Ecke
Internet / Netzwerk - GENAUE Geschwindigkeit und Restzeit errechnen
Hendi48 - Do 13.09.07 20:03
Titel: GENAUE Geschwindigkeit und Restzeit errechnen
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)
Narses - Do 13.09.07 23:54
Titel: Re: GENAUE Geschwindigkeit und Restzeit errechnen
Moin!
Hendi48 hat folgendes geschrieben: |
Den Speed lass ich so errechnen:
[...]
weil der Speed so ungenau ist |
Wenn ich das richtig sehe, dann berechnest du immer den
aktuellen Durchsatz. Es würde vermutlich besser sein, den bisherigen
Gesamtdurchsatz zu berechnen! :idea: Allerdings: da du eine Extrapolation anstellst, wird es immer eine Ungenauigkeit geben, das sollte dir klar sein. :mahn:
Hendi48 hat folgendes geschrieben: |
| Die Restzeit ist allerdings nur in Minuten [...] wie ich auch die Sekunden in der Restzeit anzeigen lassen kann? |
Delphi-Quelltext
1: 2:
| Minuten := ZeitInSekunden div 60; RestSekunden := ZeitInSekunden mod 60; |
cu
Narses
Hendi48 - Fr 14.09.07 14:42
So, das mit der Restzeit hab ich jetz hinbekommen.
Den oberen Teil hab ich irgendwie nicht verstanden. :oops:
Kannst du mir das nochmal genauer erklären und vielleicht ein Beispiel geben?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!