Hallo zusammen,
ich habe bei der Anzeige der aktuellen Uhrzeit das Problem, dass wenn das Program eien weile läuft, die Uhr anfängt zu "zählen".
Das sieht dann so aus, dass die Sekundenanzeige von 20 auf z.b. 33 hochzählt. Beim nächsten Durchlauf dann von 15 auf 34 etc.
Nach einer Weile macht dann die Minutenanzeige auch mit ..... :-(((
Hat mir dazu jemand einen TiPP ?
Im Code ist ein Teil auskommentiert. Das einer nmeiner ersten Versuche. Der Versuch über den DLLCALL ist auch nicht besser.
Code
While 1
sleep(20)
$sek = @Sec
$Min = @Min
$Std = @Hour
$sek_diff = TimerDiff($sek_start)
If $sek_diff > 1000 Then
; Uhr und Datum aktualisieren
#comments-start
if $Sek_alt <> $Sek then
select
case $Std_alt <> $Std
GUICtrlCreateLabel($Std&":"&$Min&":"&$Sek, $lpos+80,$hpos+$sysoffset, $lbreite-80, 20)
$STD_alt = $Std
case $Min_alt <> $Min
GUICtrlCreateLabel($Std&":"&$Min&":"&$Sek, $lpos+80,$hpos+$sysoffset, $lbreite-80, 20)
$Min_alt = $Min
case Else
GUICtrlCreateLabel($Sek, $lpos+110,$hpos+$sysoffset, $lbreite-110, 20)
Endselect
$Sek_alt = $Sek
endif
#comments-end
GUICtrlCreateLabel(_GetTime(), $lpos+80,$hpos+$sysoffset, $lbreite-80, 20)
$sek_start = TimerInit()
EndIf
WEnd
Func _GetTime()
Local $stSystemTime = DllStructCreate('ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort')
DllCall('kernel32.dll', 'none', 'GetLocalTime', 'ptr', DllStructGetPtr($stSystemTime))
$year = StringFormat('%04d', DllStructGetData($stSystemTime, 1))
$mon = StringFormat('%02d', DllStructGetData($stSystemTime, 2) )
$day = StringFormat('%02d', DllStructGetData($stSystemTime, 4))
$hour = StringFormat('%02d', DllStructGetData($stSystemTime, 5)) ; MEZ
$min = StringFormat('%02d', DllStructGetData($stSystemTime, 6))
$sec = StringFormat('%02d', DllStructGetData($stSystemTime, 7))
$msec = StringFormat('%03d', DllStructGetData($stSystemTime, 8))
return $hour&":"&$min&":"& $sec
EndFunc ;==>_sys_time
Alles anzeigen
Danke und viele Grüße
Asterix