Seite 3 von 3

Re: Frage zur genauen Funktionsweise von ElapsedMilliseconds

Verfasst: 09.02.2018 11:50
von #NULL
Nützt aber nichts wenn man Integer Variablen verwendet anstatt Quads, also lieber angewöhnen:

Code: Alles auswählen

time.q = ElapsedMilliseconds()
Wie da gecastet wird wenn man ElapsedMilliseconds() direkt (oder Quad Variablen) in If o.d.g. verwendet will ich jetzt gar nicht wissen. Ist aber für die meisten Programme egal, wenn sie nur zweitweise laufen.

Re: Frage zur genauen Funktionsweise von ElapsedMilliseconds

Verfasst: 09.02.2018 12:10
von NicTheQuick
Naja, ich vermute die wenigsten da draußen kompilieren noch mit 32-Bit. Bei 64-Bit sind die Integer-Variablen sowieso gleich der Quads.
Aber natürlich hast du trotzdem Recht. Wenn schon, dann sollte man es so machen, dass es definitiv immer funktioniert. :-)

Re: Frage zur genauen Funktionsweise von ElapsedMilliseconds

Verfasst: 09.02.2018 12:27
von #NULL
stimmt auch wieder :)

Re: Frage zur genauen Funktionsweise von ElapsedMilliseconds

Verfasst: 09.02.2018 22:17
von mk-soft
dige hat geschrieben:Sehe gerade, dass ElapsedMilliseconds() beim ersten Aufruf mit 0 Initialisiert wird und dann kontinuierlich hochzählt.
Bisher hatte man immer die Zeit seit dem Windows Start übermittelt bekommen, als Long, der dann nach 24 Tagen
(> 2147483647 ms) plötzlich ein Vorzeichen bekam :lol: böse Programmierfalle und nun endlich behoben :allright:
Ich verstehe bis heute nicht, das man nicht versteht, das es völlig egal ist das es bei den alten ElapsedMilliseconds (Long)
es zu einen Überlauf in den negativen Wert kommt.

Die Differenz zwischen den sehr grossen positiven Zeitwert zum späteren kleinsten negativen Wert ist IMMER richtig.

Der 32bit Systemtimer hat immer nur Addiert und den Überlauf ignoriert.

Beweis:

Code: Alles auswählen

aktuell.l = $7FFFFFFF - 1000 ; 1000 ms vor den Überlauf

Start.l = aktuell
Debug "Start: " + Start
aktuell + 2000 ; 2000 ms später

Ende.l = aktuell
Debug "Ende: " + Ende

Diff.l = Ende - Start
Debug "Diff: " +Diff
Die Messung der Zeit zwischen zwei abfragen sollte aber nicht länger als 6,7 Jahre dauern.

Re: Frage zur genauen Funktionsweise von ElapsedMilliseconds

Verfasst: 14.11.2018 22:36
von Vi-P
Sorry für die Wiederbelebung.
Also es gibt eine neue Version, die ein .q zurückgibt und nach Programmstart bei 0 startet. D.h. selbst wenn der Strom nicht ausfällt und das OS nicht abstürzt ich werde einen Überlauf nicht mehr erleben .. :cry:
Spaß beiseite, die Differenz könnte definitv größer als 24 Tage werden und da will ich sicher sein; testen ist etwas zeitaufwändig. Es wird zwar kein Flugzeug auf dem Rücken fliegen, aber es könnte plötzlich jemand im Dunklen stehen ...

Kann das jemand bestätigen. Die Doku ist hier in diesem Punkt etwas mau.