Autor Beitrag
bkgmjo
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 15.12.09 19:37 
Hallo,
ich habe gerade eine Entdeckung gemacht, die mich etwas irritiert.
Ich habe:
- eine TTimer Komponente mit dem Intervall 1000
- Einen Button, der den Timer startet und die Startzeit in einer TTime Variable speichert
- Eine Variable, die sich bei jedem Timercall um 1 erhöht, also einen Sekundenzähler
- Eine Funktion, die diese Sekundenvariable in eine TTime Variable umwandelt => sekunden * (1/24/60/60)
- 2 Labels, die die vergangene Zeit anzeigen sollen und jede Sekunde aktualisiert werden
- Das erste Label wird über Now - Startzeit berechnet
- Das zweite Label über die besagte Funktion

Dabei sollte für mich bei beiden Anzeigen immer der gleiche Wert stehen, allerdings springt das erste Label ca. alle 1 min 20 s um eine Sekunde nach vorn, hat also nach etwas über einer Stunde schon einen Unterschied von ca. einer Minute?!

Ich hätte mir das jetzt auf einem ausgelasteten Rechner vielleicht erklären können, aber dem ist auf keinen Falls so. Ich benutze Delphi 7 + Windows 7 64bit auf einem PhenomII 955 X4 PC. Konnte leider nicht testen, ob andere Systeme ein ähnliches Vehalten zeigen. Was stimmt hier nicht?
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 15.12.09 19:40 
Timer sind dafür nun einmal nicht gemacht. Punkt.
Einen Countdown oder sowas musst du über nen Timer machen, worin du gettickcount (oder queryperformancecounter) aufrufst und mit der Startzeit vergleichst.
bkgmjo Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 15.12.09 19:42 
Also darf ich annehmen, dass der Intervall nur ein Näherungswert ist?
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 15.12.09 19:44 
Ja.
Allein schon über die Kommunikation via messages weicht das ab, ausserdem liegt der kleinst mögliche Intervall auch nicht bei 1ms, sondern etwa bei 40ms.
bkgmjo Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 15.12.09 19:47 
Okay, hatte gedacht, Probleme gibt es nur bei kleinen Intervallen. Trotzdem Danke für die Info.
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 15.12.09 19:49 
Wenn du einen genauen und schnellen Timer brauchst, kannst du z.B. Application.Onidle nehmen (Da gibs bestimmt was in der Suche)
bkgmjo Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 15.12.09 19:53 
War nur Spielerei für meine Freundin, die jetzt nen Informatikkurs an der Schule hat. Also nichts dramatisches. Hatte nur vermutet, es liegt im Quad Core oder der 64 Bit Version von 7, die mir ja fleissig Kompatiblitätswarnungen ausspuckt. Wenns mal wichtig wird, nerv ich hier wieder, wenn die Suche nicht hilft ;-)