AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ungenauigkeit von TDateTime / Alternative?

Ein Thema von Antigo · begonnen am 27. Mär 2009 · letzter Beitrag vom 28. Mär 2009
 
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
 


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 12:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz