Entwickler-Ecke
Sonstiges (Delphi) - restzeit berechnen beim sicherungstool
sintec - Fr 25.05.07 12:02
Titel: restzeit berechnen beim sicherungstool
Hallo Leutz,
irgendwie komme ich nicht auf die Formel um die Restzeit zu berechnen.
habe auch schon so manche Foren durchsucht und vieles ausprobiert, doch es ist immer komplett fasch.
folgende Daten habe ich:
Delphi-Quelltext
1: 2: 3:
| filessize :int; gesichertefilesize :int; startzeit, tickzeit :DWord; |
Wie kann ich daraus die Restzeit berechnen oder fehlt mir noch irgendwas?
uko - Fr 25.05.07 12:39
Also eigentlich hast Du alles:
Du mußt nach dem Speichern der ersten Datei aus Startzeit und Tickzeit die Durchsatzrate (also wieviele Bytes pro Zeiteinheit uebertragen wurden) bestimmen. Daraus kannst Du dann eine Abschätzung für die Restdauer erstellen.
Erwarte allerdings nicht, daß die immer stimmt: die Durchsatzrate bleibt mitnichten immer gleich. Am besten Du berechnest sie nach jeder weiteren übertragenen Datei neu und passt die Schätzung an.
HTH,
Ulrich
sintec - Fr 25.05.07 13:18
dann würde es ungefähr so aussehen:
Delphi-Quelltext
1:
| restzeit := filessize div (gesichertefilesize div (tickzeit - startzeit)); |
oder habe ich jetzt ein Denkfehler?
uko - Fr 25.05.07 13:31
Delphi-Quelltext
1:
| restzeit := (filesize - gesichertefilesize) * ((tickzeit - startzeit) / gesichertefilesize) |
Ulrich
sintec - Fr 25.05.07 14:06
uko hat folgendes geschrieben: |
Delphi-Quelltext 1:
| restzeit := (filesize - gesichertefilesize) * ((tickzeit - startzeit) / gesichertefilesize) |
Ulrich |
So zeigt es immer 0 an, obwohl er ca. 2 Min für die Verarbeitung braucht!
uko - Fr 25.05.07 14:24
Und warum? Hast Du schon mal die Werte im Debugger geprüft? Nur so als kleinen Tip: so lange die erste Datei läuft, dürfte bei Dir der Wert von Tickzeit auf 0 stehen.
Anders ausgedrückt: du kannst erst ab der zweiten Datei mit einer sinnvollen Zeit rechnen. Wenn Du so was schon für die erste Datei brauchst, dann könntest Du z.B. ein kleines Testfile uebertragen, damit die Uebertragungsrate bestimmen und diese dann als Ausgangswert für die eigentliche Übertragung hernehmen. Sobald dann die erste Datei durch ist, kannst Du wie oben weiterrechnen.
Ulrich
sintec - Fr 25.05.07 14:42
uko hat folgendes geschrieben: |
Und warum? Hast Du schon mal die Werte im Debugger geprüft? Nur so als kleinen Tip: so lange die erste Datei läuft, dürfte bei Dir der Wert von Tickzeit auf 0 stehen.
Anders ausgedrückt: du kannst erst ab der zweiten Datei mit einer sinnvollen Zeit rechnen. Wenn Du so was schon für die erste Datei brauchst, dann könntest Du z.B. ein kleines Testfile uebertragen, damit die Uebertragungsrate bestimmen und diese dann als Ausgangswert für die eigentliche Übertragung hernehmen. Sobald dann die erste Datei durch ist, kannst Du wie oben weiterrechnen.
Ulrich |
Ja das ist Ok so, ich brauch es auch nicht für die erste Datei.
Kann es mit der Änderung zusammenhängen die ich gemacht habe?
Statt "/" habe ich "div" gesetzt weil er an sonsten mit der Fehler ausgibt:
Quelltext
1:
| [Pascal Fehler] [...]: E2010 Inkompatible Typen: 'Cardinal' und 'Extended' |
uko - Fr 25.05.07 14:51
Das Ersetzen durch DIV kann sehr wohl was ausmachen (hängt von der Größe der einzelnen Werte ab)
Delphi-Quelltext
1:
| restzeit := round((filesize - gesichertefilesize) * ((tickzeit - startzeit) / gesichertefilesize)); |
Ansonsten: prüf mal, ob die Ausgangswerte für die obige Formel stimmen.
Ulrich
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!