Autor Beitrag
PatrickSteiner
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 15.12.05 12:17 
Hallo zusammen

Ich verwende die Timerkomponente. Ich zähle mit dieser eine Zeit von 6 Minuten runter auf 0 im Sekundentakt.
Das Programm läuft wie es soll. Leider, je nach dem was für ein Rechner man benutzt, stimmt die Zeit am Ende um ca. 15 Sekunden nicht.
Die Systemzeit auf dem PC auf welchem sich der Fehler zeigt läuft korrekt und genau.
Hat jemand dafür eine Erklärung und wie man das umgehen kann.
Vielen Dank für eure Hilfe.


Moderiert von user profile iconraziel: Topic aus VCL (Visual Component Library) verschoben am Do 15.12.2005 um 14:30

_________________
mfg Patrick
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 15.12.05 12:23 
Moin!

Das ist beim eventbasierten Windows System-Timer normal, und das wird durch den Sekundentakt (Vermutung: Timer erzeugt im Sekundentakt Ereignisse, und diese zählst du bis 60 rauf) noch verstärkt -> deshalb die PC-Abhängigkeit.

cu
Narses
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Do 15.12.05 13:14 
Also du solltest nicht im Timer herunterzählen. Ich denke es wäre besser, wenn du in dem Timer mittels GetTickCount abfragst wie viel Zeit vergangen ist. Ein Intervall von 1000 sollte ausreichen um genau genug zu sein und lang genug zu sein um von der CPU-Leistung her nicht auf zufallen. Evtl kannst du den Intervall auch 2 Sekunden vor dem Ende noch ein wenig kleiner Stellen um noch genauer an die 6 Min zu kommen. GetTickCount ist aber auch nicht sehr genau. Dabei liegen die Abweichungen aber im Millisekundenbereich.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Wollaston
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 15.12.05 13:15 
Hallo,

ich hatte auch mal dieses Problem. Beim start des Timers musst Du die aktuelle Zeit speichern. In der Unit DateUtils (glaube ich, hab gerade kein Delphi zur Hand) gibt es Funktionen die feste Zeitintervalle zurückliefern (z.Bsp.: OneSecond, OneMinute, ...).

Diesen Wert addierst Du einfach auf die aktuelle Zeit und fragst im OnTimer-Event ab ob diese Zeit erreicht oder überschritten ist. Dafür reicht es eigentlich aus den TimerIntervall auf 500 oder 1000 zu stellen.

Mfg Wollaston