Autor Beitrag
sintec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Fr 25.05.07 12:02 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
filessize :int; //größe aller dateien zusammen die gesichert werden sollen
gesichertefilesize :int; //Größe der gesicherten dateien (wird nach jeder gesicherten Datei neu berechnet);
startzeit, tickzeit :DWord; //Variablennamen erklären sich von selbst



Wie kann ich daraus die Restzeit berechnen oder fehlt mir noch irgendwas?
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Fr 25.05.07 13:18 
dann würde es ungefähr so aussehen:

ausblenden Delphi-Quelltext
1:
restzeit := filessize div (gesichertefilesize div (tickzeit - startzeit));					


oder habe ich jetzt ein Denkfehler?
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: Fr 25.05.07 13:31 
ausblenden Delphi-Quelltext
1:
restzeit := (filesize - gesichertefilesize) * ((tickzeit - startzeit) / gesichertefilesize)					


Ulrich
sintec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Fr 25.05.07 14:06 
user profile iconuko hat folgendes geschrieben:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Fr 25.05.07 14:42 
user profile iconuko 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:
ausblenden Quelltext
1:
[Pascal Fehler] [...]: E2010 Inkompatible Typen: 'Cardinal' und 'Extended'					
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: 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)

ausblenden Delphi-Quelltext
1:
restzeit := round((filesize - gesichertefilesize) * ((tickzeit - startzeit) / gesichertefilesize));					


Ansonsten: prüf mal, ob die Ausgangswerte für die obige Formel stimmen.


Ulrich