Zitat:
So aufwändig ist es gar nicht nötig, wenn man mit Überläufen rechnet.
Wir testen Programmteile halt immer auch mit eingeschalteter Überlaufprüfung. Und dann sind Dinge wie
x := GetTickCount - LastUserInput;
unangenehm, weil im Fall GetTickCount < LastUserInput eine Integerüberlauf-
Exception ausgelöst (und x nicht berechnet) wird - und der Code beim Testen somit durchfällt.
Bei ausgeschalteter Überlaufprüfung wird keine
Exception ausgelöst und es wird "richtig" gerechnet.
Zitat:
Da könnte er nach genau 49.7 Tagen einmal kurz falsch liegen aber wen kümmert das
In der Release Version hast du wahrscheinlich/sicher Überlaufprüfung auf AUS. Dann rechnet dein Programm auch dann richtig, wenn GetTickCount < LastUserInput - dein Programm wird also nach Ersetzen von GetTickCount64 durch GetTickCount korrekte Werte berechnen (solange der letzte Userinput nicht mehr als 49 Tage zurückliegt):
Delphi-Quellcode:
var a, b , res : cardinal;
begin
a := high(cardinal);
b := 0;
res := b-a;
res=1