AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Große Abweichung zwischen Now und GetTickCount
Thema durchsuchen
Ansicht
Themen-Optionen

Große Abweichung zwischen Now und GetTickCount

Ein Thema von norwegen60 · begonnen am 2. Mai 2020 · letzter Beitrag vom 3. Mai 2020
 
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Große Abweichung zwischen Now und GetTickCount

  Alt 2. Mai 2020, 22:31
Hallo zusammen,

ich bin gerade über etwas gestolpert, das ich nicht erwartet hätte:

Um von einer eventuellen Änderung der Zeit unabhängig zu sein (z.B. Sommer-/Winterzeit, oder Zeitkorrektur) messe ich die Zeit über GetTickCount. Ich weiß, dass die Auflösung irgendwo um die 16ms liegt, aber das ist eigentlich kein Problem.

Durch Zufall habe ich bemerkt, dass die über GetTickCount kalkulierte Zeit teilweise größere Abweichungen bekommen. Zuerst dachte ich es sei irgendwo ein Fehler, aber es lässt sich recht leicht nachvollziehen und Fehler sehe ich da keinen:
Delphi-Quellcode:
procedure TForm7.btStartClick(Sender: TObject);
begin
  iStart := GetTickCount;
  dtStart := now;

  tiTest.Enabled := not tiTest.Enabled;

  lsDelta.Clear;
end;

procedure TForm7.tiTestTimer(Sender: TObject);
var
  dt1, dt2: TDateTime;

begin
  dt1 := now;
  dt2 := dtStart + (GetTickCount - iStart) / (1000 * 24 * 60 * 60);

  lsDelta.Add((dt1-dt2)*24*60*60);
end;
Um das ganze zu visualisieren im Anhang ein Printscreen. Die Kurve hängt auch davon ab, wann man startet. Ich hatte auch mal eine Kurve die ist Sinusförmig rauf und wieder runter, dann aber ziemlich lang um die 10s Abweichung rum gependelt.
Im Chart noch eine zweite Kurve (orange), wo ich die Ticks mit QueryPerformanceCounter erfasst habe.
Über den Timer habe ich alle 1000ms die Abweichung berechnet und im Chart in [s] eingetragen

Hat jemand eine Erklärung?
Und vor allem, wie kann ich die Zeitmessung von Uhrzeit-Veränderungen unabhängig und genau machen?

Verwendet wird Delphi XE und Win7

Grüße
Gerd
Angehängte Grafiken
Dateityp: jpg TimeGetTickCount.jpg (51,0 KB, 50x aufgerufen)

Geändert von norwegen60 ( 2. Mai 2020 um 22:36 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz