Ich möchte einen auf die Hundertstel Sekunde exate Stoppuhr programmieren.
Soweit mein Code:
Code: Alles auswählen
Enumeration
#window_main
#text_m ;minuten
#text_s ;sekunden
#text_c ;hundertstel
#frame_m
#frame_s
#frame_c
#font_stopper
EndEnumeration
SetPriorityClass_(GetCurrentProcess_(),#HIGH_PRIORITY_CLASS)
LoadFont(#font_stopper, "Arial", 40, #PB_Font_Bold)
Global minuten = 0
Global sekunden = 0
Global hundertstel = 0
Procedure Open_window_main()
OpenWindow(#window_main, #PB_Ignore, #PB_Ignore, 400, 200, "Cube Stopper ", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(#window_main))
Frame3DGadget(#frame_m, 25, 25, 100, 100, "Minuten")
TextGadget(#text_m, 45, 45, 60, 60, "00")
SetGadgetFont(#text_m, FontID(#font_stopper))
Frame3DGadget(#frame_s, 145, 25, 100, 100, "Sekunden")
TextGadget(#text_s, 165, 45, 60, 60, "00")
SetGadgetFont(#text_s, FontID(#font_stopper))
Frame3DGadget(#frame_c, 265, 25, 100, 100, "Hundertstel")
TextGadget(#text_c, 285, 45, 60, 60, "00")
SetGadgetFont(#text_c, FontID(#font_stopper))
EndProcedure
Procedure timer(hwnd, uMsg, idEvent, dwEvent)
Shared minuten
Shared sekunden
Shared hundertstel
hundertstel = hundertstel + 1
If hundertstel > 9
hundertstel = 0
sekunden = sekunden + 1
If sekunden > 59
sekunden = 0
minuten = minuten + 1
EndIf
EndIf
sekunden$ = Str(sekunden)
minuten$ = Str(minuten)
hundertstel$ = Str(hundertstel)
SetGadgetText(#text_c, hundertstel$)
SetGadgetText(#text_m, minuten$)
SetGadgetText(#text_s, sekunden$)
EndProcedure
Open_Window_main()
hwnd = WindowID(#window_main)
timer = SetTimer_(hwnd, 1, 100, @timer())
ende = 0
Repeat
event = WaitWindowEvent(10)
Select Event
Case #PB_Event_CloseWindow
ende = 1
EndSelect
Until ende = 1
Auf 20 Sekunden geht die "Stoppuhr" ca. 1 Sekunde nach...
kann ich das irgendwie vermeiden?
Danke für die Hilfe
lg