erstmal danke für die schnellen Antworten.
Zum Timer Intervall: ja mir ist klar das der Timer nicht wirklich jede Millisekunde aufgerufen wird. Ich wollte auch nur das kleinstmöglichste Intervall erreichen und das hab ich so ja ^^
Wegen dem Intervall von einer Sekunde: Ich hatte halt überlegt das die Timer sicher nicht so wahnsinnig genau ist. Und wenn er jedesmal erst nach 1,1 Sekunden auslöst hab ich ja nach 10 Sekunden eine Sekunde verloren. Deshalb die Lösung mit dem kleineren Intervall, so dass ich eben früher merke wann die nächste Sekunde anfängt.
Zitat von
jfheins:
1/60 einer Sekunde ist ungefähr 17 Millisekunden.
Genauer als 17 Millisekunden geht dein Timer sowiso nicht. Da du in deinem ersten Versuch guckst, ob mehr als eine Sekunde vergangen ist, kann es duchaus passieren, dass mal nicht eine Sekunde, sondern 10-25 Millisekunden vergangen sind.
Wenn jetzt zwischen jeder Aktion 1 Sekunde und 17 Millisekunden vergehen hast du nach 59 Aktionen ... tadaaa 60 Sekunden benötigt.
Der zweite Versuch funktioniert, da er nicht immer auf die letzte Aktion zurückblickt (die ja einen Hauch verspätet eingetreten ist) sondern an den Anfang.
Werden bei TdateTime denn auch die millisekunden mitgespeichert? Wenn ja dann stimmt das natürlich weil ich ja dann darauf warte, dass seit der letzten Aktion mind 1 Sekunde vergangen ist. Ich will ja aber darauf warten, dass der Sekundenzeiger umspringt, also FormatDateTime('ss',Now) eine andere Zeit ausspuckt, als bei der letzten Aktion und da hilft mir ein GettickCount auch nicht weiter.
Meine Fummel-Lösung mit dem Vergleich zweir FormatDateTime Ausdrücke hat jetzt jedenfalls 20 min lang perfekt funktioniert. Auch wenns mir irgendwie sehr gefrickelt vorkommt.