"sehr genau" und GetTickCount/TTimer/... wiedersprechen sich.
Alles unterhalb weniger Vielfacher von 16 ms kannst du vergessen.
Und ausßerdem bist du selber für die Ungenauigkeit verantwortlich.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Temp: TDateTime;
begin
Temp := GetLocalTime;
Time := Time + Temp - Tick;
Segment := Segment + Temp - Tick;
Label1.Caption := MSFormat(Time);
Tick := Temp;
end;
Und wenn Time und/oder Tick auch nicht Fließkommazahlen sind, dann kommen schnell auch noch die Rundungsfehler dieser Typen dazu.
TStopwatch
Multimedia-Timer
QueryPerformanceCounter
ASM RDTSC (Rea
d Time Stamp Counter)
uvm.