Einzelnen Beitrag anzeigen

Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

Ungenauigkeit von TDateTime / Alternative?

  Alt 27. Mär 2009, 22:31
Hi,
Ich möchte gerne JEDE Sekunde eine Aktion ausführen und diese dann samt Ergebnis zu späteren Analyse Zwecken abspeichern. Dabei ist es mir wichtig, das ich auch wirklich für jede Sekunde ein Ergebnis erhalte.

Deshalb hab ich meinen Timer, der sekündlich diese Aktion anstoßen soll, auch nicht einfach mit 1000ms getacktet, sondern mit 1ms. Und in jedem Durchlauf frage ich dann ab, ob seit der letzten Aktion schon eine Sekunde vergangen ist.

Das heisst, wenn ich die Aktion ausfühe speichere ich unter FlastAction vom Typ TDatime das aktuelle Datum/Uhrzeit folgendermaßen:

Delphi-Quellcode:
Flastaction: TDateTime;
//...
FLastAction:=Now;
Dann frage ich in jedem Timer Aufruf

Delphi-Quellcode:
if SecondsBetween(Now,FLastAction) > 0 then
  //Stoße nächste Aktion an, speicher Now als FlastAction und als Startpunkt der Aktion
Nun passierte es häufiger, dass ich dann beim Auswerten der Datensätze nur 59 Aktionen in der Minute hatte, d.h. iwie wurde einmal nichts ausgelöst. Und etwas rechenintensives, dass auch nur annäherend für 1 sec das Hauptprogramm blockieren würde ist nicht dabei.

Jetzt hab ich testweise etwas ganz blödes gemacht und statt secondsbetween folgendes benutzt:
Delphi-Quellcode:
if FormatDateTime('ss',Now)<>FormatDateTime('ss',FLastAction) then
    //Stoße nächste Aktion an, speicher Now als FlastAction und als Startpunkt der Aktion
und jetzt habe ich plötzlich durchgehend meine 60 Aktionen pro Minute.

Jetzt meine Fragen:
- Ist das Zufall und wenn ich Pech hab verlier ich hin und wieder trotzdem mal ein paar Sekunden?
- Gibt es vielleicht eine andere Möglichkeit jede Sekunde etwas auszuführen?
Da es eigentlich nicht an zuviel
Rechenaufwand für eine Sekunde liegen kann, würde mich da auch ein extra Thread nicht wirklich weiterbringen oder?

Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat