Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Ungenauigkeit von TDateTime / Alternative?

  Alt 28. Mär 2009, 10:07
Ich würde im Timer-Ereignis einfach das Interval in Abhängigkeit von der Ungenauigkeit korrigieren. Hier ein Schnippel;

Delphi-Quellcode:
Procedure TForm1.StartButtonClick (Sender : TObject);
Begin
  Timer1.Interval := 1000;
  Start := Now;
  NumberOfSeconds := 0;
  Timer1.Enabled := True;
End;

procedure TForm16.Timer1Timer(Sender: TObject);
Var
  elapsed : Double;

begin
  elapsed := 86400*(Now-Start);
  inc (NumberOfSeconds );
  Timer1.interval := Trunc(1000*(1 - Elapsed + NumberOfSeconds )); // Interval korrigieren
// Test-Code zum Anzeigen: Anzahl der Sekunden, vergangene Sekunden seit Start, korrigiertes Interval
  Memo1.Lines.add(Format('%.4d %8.1f %4d',[NumberOfSeconds , elapsed, timer1.interval]));
end;
Läuft wie ein Uhrwerk
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat