Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - zeitverschiebung
PatrickSteiner - Do 15.12.05 12:17
Titel: zeitverschiebung
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
raziel: Topic aus VCL (Visual Component Library) verschoben am Do 15.12.2005 um 14:30
Narses - 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 - 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.
Wollaston - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!