Entwickler-Ecke
Sonstiges (Delphi) - Datumswechsel bemerken
Der Michel - Mi 04.12.02 12:27
Titel: Datumswechsel bemerken
Hallo,
gibt es eine Message o.ä. die Windows raussendet wenn sich das Datum ändert, sprich wenn die Uhr von 23:59:59 auf 00:00:00 springt?
Man könnte natürlich auch einen Timer einbauen der jede Sekunde die Funktion Date() aufruft und prüft ob sich etwas geändert hat, aber geht das nicht auch anders?
Gruß, Michel
Delete - Mi 04.12.02 19:34
Meines Wissens nicht. Denn wenn man das dann konsequent durchziehen würde, würde das bedeuten, dass Windows auch jede Sekunde eine Message schickt - und zwar von sich aus (nicht dass das jemand mit einem Timer verwechselt). Und warum sollte das Windows tun? :roll:
elundril - Do 22.11.07 12:32
Und wie kann man dann sowas am ressourcenfreundlichsten rausfinden?
lg elundril
BenBE - Do 22.11.07 12:45
Mit "Adaptivem Polling" ;-)
Beispiel:
Es ist 13:37.
Der nächste Datumswechsel ist in 10:23 HH:MM.
Folgerung des Programmes: Es lohnt sich nicht früher als in 5 Stunden noch mal nachzufragen.
Es ist 18:45.
Der nächste Datumswechsel ist noch 5:15 HH:MM entfernt.
Folgerung des Programmes: In 5 Stunden nachzufragen könnte ggf. etwas knapp werden, fragen wir in 4 nach.
Es ist 22:42.
Der nächste Datumswechsel ist in 1:18 HH:MM.
Folgerung: Halbstündlich abfragen.
Es ist 23:17:42.
Der nächste Datumswechsel ist in 42:18 MM:SS.
Folgerung: Alle 15 Minuten abfragen ...
Und wenn Du dann so knapp 2 Minuten vorher bist, kannste auf nen Sekundenintervall übergehen ...
Damit hast Du statt bis zu 86400 Abfragen nur rund 500 (je nach Art der Vorgehensweise sogar NOCH weniger).
elundril - Do 22.11.07 12:52
Ahh verstehe! Beim Programmstart einfach mal gucken wie lange noch Zeit bis mitternacht ist und dann immer gucken bei jedem Timer event wie lange nach bis mitternacht und gegebenenfalls das Interval ändern.
Cool, danke!
lg elundril
BenBE - Do 22.11.07 13:15
Jep. Und beim Ändern des Intervals beachten, dass Du gegebenenfalls den Clock Skew ;-) ausgleichen musst. Bei meinem Beispiel war das übertrieben, aber sollte nur zeigen, dass Du damit rechnen solltest, dass die Computer-Uhr ggf. nicht regelmäßig geht.
Ferner gibt es von Windows ein Event (IIRC), wenn jemand die Systemuhr explizit umstellt. Dieses solltest Du ggf. auch mit Auswerten; sofern es wirklich genau werden sollte :P
Moderiert von
BenBE: Kleinen Schreibfehler korrigiert. Es heißt Clock Skew und nicht Screw ;-)
elundril - Do 22.11.07 16:38
was meinst du mit Clock Screw und nicht regelmäßig gehen? das die uhr manchmal n paar sekunden überspringt??
lg elundril
BenBE - Do 22.11.07 18:11
Jain. Die Uhrenquarze bei Computern sind (zumeist) Billigprodukte und damit extrem auch Temperaturabhängig (Lernt man in Microcontrollertechnik und PC-Technik). Daher läuft eine PC-Uhr je nach Umgebungstemperatur unterschiedlich schnell.
Diese Varianz ist zwar auf realen Systemen meist <~+-1Min, sollte aber nicht ganz vernachlässigt werden, wenn man seinen Timer einrichtet.
@Clock Skew: Gibt sogar schon wissenschaftliche Untersuchungen zu dem Thema, die belegen, dass man mit dieser Unregelmäßigkeit sogar einzelne Computer identifizieren kann.
Vgl.
https://events.ccc.de/congress/2006/Fahrplan/events/1513.en.html
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!