Code-Beispiel
Now() in Sekunden umrechnen
Der Timer()-Befehl gibt die Sekunden nach dem Start des Computers zurück, und der Now()-Befehl (über vbcompat.bi zu includieren) gibt die aktuelle Zeit als Double zurück.
Dabei ist zwar die Zeit in Tagen als Ganzzahl gegeben, jedoch ist der Zeitanteil der Stunden, Minuten und Sekunden als 0.0 bis 0.99999~ codiert.
Um nun auch Now() in Sekunden umzurechnen und somit einen Zeitabstand zu ermitteln, den man komfortabel zum Anzeigen einer Laufzeit ohne den Timer()-Befehl verwenden kann, muss man den Double-Wert in einen UInteger-Wert umwandeln. Jedoch reicht hier nicht ein einfaches CUInt() aus, um das Problem zu lösen. Es darf nicht vergessen werden, das die Sekunden, Minuten und Stunden als Gleitkommawert definiert wurden.
Zur Lösung des Problems kann man folgende kleine Umrechungsfunktion nutzen:
Function NowTimeTransform(V_Value as Double) as UInteger
Return abs(V_Value) * 86400 + (86400 * (V_Value - abs(V_Value)))
End Function
Diese Funktion wandelt den Now() Double-Wert in einen Sekunden UInteger-Wert um.
#include once "vbcompat.bi"
Print NowTimeTransform(Now()) 'Gibt die aktuelle Zeit in Sekunden aus
Dim XTime as Double = Now() 'wir speichen die aktuelle Zeit für eine Zeitmessung.
Sleep 3000, 1 'und warten anschliessend 3 sekunden
Print NowTimeTransform(Now() - XTime) 'jetzt rechnen wir von der aktuellen Zeit die Startzeit weg, und erhalten so einen Zeitabstand.
'Würde man hier nur Now() - XTime) ohne die Umrechnung nutzen, so würde man nur einen Wert erhalten, der 0.000134 oder ähnlich aussieht, jedoch nicht den Wert 3
Viel Spass
MfG
TPM
Zusätzliche Informationen und Funktionen |
- Das Code-Beispiel wurde am 27.12.2008 von ThePuppetMaster angelegt.
- Die aktuellste Version wurde am 13.10.2010 von ytwinky gespeichert.
|
|