Beim Nutzen von BdosHL kann auch während einer Minute ein Überlauf erfolgen.
Hängt halt davon ab, wann der Rechner gestartet wurde.
Ein Ueberlauf kannst du immer bekommen. Egal ob 8, 16, 32 oder sonstwieviel Bits.
Da stimme ich dir völlig zu.
Jedes Zahlenformat kann überlaufen.
Die Frage ist, wie oft und stört mich das?
Überlauf macht Arbeit beim Berechnen von Ausführungszeiten: man kann sich zB. nicht darauf verlassen, dass die Millisekundenzahl bei der zweiten Messung größer ist als beim ersten Mal. Und ich brauche irgendwelche zusätzliche Informationen, ob da vielleicht ein oder sogar mehrere Überläufe waren.
Im Millisekundentakt gibt es einen Überlauf:
- bei 8 Bit (256) ca. 4x die Sekunde.
- bei 16 Bit (65536) nach ca. 1 Minute. Wer aber zB. die Ausführungszeit von Apfelmännchen auf dem Rechner messen möchte, hat eventuell bereits nach einer Sekunde einen Überlauf; je nachdem wie lange der Rechner bereits läuft und somit der interne Millisekunden-Zähler bereits läuft.
- bei 32 Bit (ca. 4 Milliarden): das normale Jahr hat ca. 31.5 Millionen Sekunden, in Millisekunden gerechnet gibt es also etwa 7 mal pro Jahr einen 32-Bit Überlauf, somit alle 1 bis 2 Monate.
Für mich heißt das, dass ein 32-bit Zähler bei Zeitmessungen im Millisekundentakt für die meisten Anwendungen, zB. Apfelmännchen-Vergleich, angemessen und ausreichend sein sollte, ohne Überlauf.
Und es macht sicher Sinn, die Komplexität möglichst einer Funktion zu bündeln und dann einfach anwenden zu können.
Millis1 := GetMillis;
{ irgend etwas ausprobieren }
Millis2 := GetMillis;
MilliDauer := Millis2 - Millis1;
{ und dann mit dieser Erkenntnis etwas tun, zB. auf dem Bildschirm anzeigen
}