Re: Uhrzeit auf die Millisekunde
Perfekt so reichts mir Danke :-D :-D
Ihr seit echt geil |
Re: Uhrzeit auf die Millisekunde
In der SDK hab ich folgende nützliche Funktion gefunden:
Zitat:
Mit QueryPerformanceCounter liest du den aktuellen Wert aus. Die Differenz von 2 Aufrufen gibt dir die Anzahl der Ticks an. Diesen Werte geteilt durch die Frequenz gibt dir die Differenz in Sekunden aus. |
Re: Uhrzeit auf die Millisekunde
Guter Beitrag Jelly.
Das habe ich bis jetzt noch nicht gewust. Dieser Counter wird nicht von irgendwelchen Stromspar modi beeinflusst? |
Re: Uhrzeit auf die Millisekunde
Zitat:
|
Re: Uhrzeit auf die Millisekunde
Die Funktion NOW ist auf die Millisekunde genau (da sie intern (BS) auch mit GetTickcount usw hantiert), manche Werte lassen sich aber nicht darstellen.
Zur Erklärung: TDateTime ist im Prinzip ein einfacher Double-Wert, in dessen Ganzzahlteil die Tage seit Wasweisichwann dargestellt werden, im Nachkommateil die Millisekunden seit 0 Uhr. Eine ms ist sozusagen ein 86400000stel eines Tages, also 1,157407407...*10^-8. Da eine ms schon einen periodischen Dezimalbruch darstellt, ist die Warscheinlchkeit sehr hoch, dass auch ein vielfaches davon periodisch (auf Basis 10). Dieser Wert muss zudem binär dargestellt werden (Basis 2), was die Stelligkeit stark erhöht. Da nun bestimmte Millisekunden den Darstellungsbereich(Genauigkeit) eines Doubles sprengen muss gegebenenfalls gerundet (Basis 2) werden. Diesen gerundeten Wert kann man dann aber halt nur mit einem Fehler zurückwandeln. Es ist also nicht die Funktion ungenau, sondern das Ergebnis, was aber im Prinzip auf das Gleiche rauskommt. |
Re: Uhrzeit auf die Millisekunde
Hallo,
Zitat:
Gruß Hawkeye |
Re: Uhrzeit auf die Millisekunde
Ja. Deshalb hab ich anschliessend nochmal GetPerformanceFrequency und GetPerformanceCounter aufgeführt.
|
Re: Uhrzeit auf die Millisekunde
das Basisdatum in delphi ist der 30.12.1899 00:00
Vor dem Komma sind ganze tage nach dem Komme sind Stunden,Minuten, Sekunden udn angebliche "Millisekunden" um Rundungsfehler zu minimieren. Da Fließkomma zahlen mit zunehmendem Betrag ungenauer (schlechter aufgelöste nachkommastellen )werden kann das wirklich auch die Darstellung ein probelem sein. |
Re: Uhrzeit auf die Millisekunde
Hallo Siderion,
ich muss dir leider widersprechen und zwar heftig. Now und alle damit zusammenhängenden Datum-Uhrzeitquellen hängen am Timertick Interrupt. Dieser wird alle ca 55ms ausgelöst. Dmentsprechend wird der Wert von now erhöht. Die Genauigkeit der Zeitmessung hat also überhaupt nichts mit der mathematischen Auflösung und deren Problematik zu tun, sonder hängt einfach damit zusammen, dass nur ca alle 55msec gezählt wird. Die Auflösung ist damit beschränkt. Etwas anders stellt sich die Sache mit QueryPerformanceFrequency dar. Da diese Funktion jedoch nicht auf jedem System zur Verfügung steht kann man sie getrost vergessen. Grüsse |
Re: Uhrzeit auf die Millisekunde
Hm, der Umfragesteller sprach ja auch nur vom Auslesen einer Uhrzeit, nicht aber von irgendwelchen Stoppzeiten o. Zeitdifferenzen. Das wäre natürlich schon etwas anderes gewesen ...und das dann vieldiskutierte NOW wäre in der Truhe geblieben :mrgreen:
Und von daher: Wenn es dem Threadmaker aber tatsächlich nur um eine solche normale Uhrzeit ging (was ja vllt. nicht unbedingt so sein muss), dann wäre natürlich auch die Nutzung von "QueryPerformanceCounter" nur relativ. Denn dann bliebe ihm immer noch das Problem, wo er eine exakte Anfangszeit herbekommt, welche dann nämlich ebenfalls auf die Millisekunde genau zu sein hätte. Selbst wenn er die Atomzeit aus dem Internet abfragen würde, könnte er wohl nicht sicher sein, dass da nicht auch noch einige Millisekunden Übermittlungsverzögerung mit drin sind. @WS1976 55ms, vielleicht früher mal? Heute scheinen es jedenfalls eher Perioden a 16ms zu sein. @Jelly: "GetTickCount hingegen ist auf die msec genau.“ Das Result von GetTickCount ändert sich übrigens auch nur alle 16 Millisekunden! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz