Einzelnen Beitrag anzeigen

Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Windows-Benutzer-Leerlaufzeit

  Alt 3. Dez 2017, 16:35
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
Michael Gasser
  Mit Zitat antworten Zitat