Intervall messen: Ticks vs TDateTime

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Intervall messen: Ticks vs TDateTime

Beitrag von Eclipticon »

Hi,

ich moechte ziemlich robust einen Intervall messen. Dafuer wuerde man wohl einen Code wie diesen verwenden:

Code: Alles auswählen

StartTime = GetTime
{ Irgendwas }
Interval = GetTime - StartTime
Egal, ob ich TDateTime oder Ticks verwendet, man handelt sich Probleme ein:
  • TDateTime ist nicht robust gegen Sommerzeitumstellungen, manuelle Zeitumstellungen oder Synchronisation mit Zeitservern
  • Ticks koennen nach einigen Wochen Rechnerlaufzeit (und das kann auf meinen Zielsystemen schon passieren) wieder bei 0 starten ...
Gibt's einen Konsens, wie man diesem Problem am besten begegnet?

Danke!

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Intervall messen: Ticks vs TDateTime

Beitrag von theo »

Vllt. kann EpikTimer das (k.A.)
http://wiki.lazarus.freepascal.org/EpikTimer/de" onclick="window.open(this.href);return false;

Sonst kannst du die Nullstellung ja irgendwie abfangen.

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Intervall messen: Ticks vs TDateTime

Beitrag von marcov »

Irgendwie UTC Zeit abfragen statt lokaler Zeit?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Intervall messen: Ticks vs TDateTime

Beitrag von mschnell »

Wie sicher und wie genau musst Du es denn haben ?

Da Linux und Windows keine Realtime-Betriebssysteme sind, kann Dein Programm an jeder Stelle "beliebig" lange vom Betriebssystem festgehalten werden. Ob und wie das geschieht hängt davon ab, was sonst noch auf dem Rechner läuft. Da hast Du keinen Einfluss drauf.

Du kannst also eine gewisse Mess-Genauigkeit immer nur mit einer gewissen Wahrscheinlichkeit bekommen.

Das ist das Gegenteil von "Robust".

Wenn es um lange Intervalle und nicht um eine Genauiglkeit kleiner z.B. 1 Sekunde geht, ist UTC natürlich das angesagte Format. In Linux ist das vermutlich kein Problem. In Windows könnte das OS z.B. bei Sommerzeit-Umstellu8ng Glitches erzeugen.

-Michael

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Intervall messen: Ticks vs TDateTime

Beitrag von Eclipticon »

Hi, die Praezision ist nicht so sehr das Problem, es geht eher um Intervalle im Sekunden- bis Minutenbereich. Ich moechte nur vermeiden, dass mir die Sommerzeitumstellung ploetzlich aus 1 Sekunde 3601 Sekunden macht ;-)

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Intervall messen: Ticks vs TDateTime

Beitrag von MAC »

kannst du nicht ein sicherheits-mechanismus einbauen.
ich geh mal davon aus das du öffters ein Interval misst.
Zwischen 2 Messungen vergehen vlt 0.5 Sekunden. Wenn jetzt der abstand zur letzten Messung >= 60 Minuten ist. Zunot kann man ja auch den Benutzer fragen was da gerade los war :D

Code: Alles auswählen

Signatur := nil;

Antworten