Diskussion:Gambas: Timer
Nach meinen Beobachtungen arbeitet der Timer bei GAMBAS nicht zuverlässig in dem Sinn, dass man sich nicht darauf verlassen kann, dass die Routine Timer1_Timer() pünktlich ausgeführt wird: Wenn gerade etwas anderes bearbeitet wird, dann wird das bis zu Ende ausgeführt, erst dann kommt Timer1_Timer dran. Das kann zu Problemen führen bis hin zur Unbrauchbarkeit des Programms. Man würde sich wünschen, dass die Routine mit höherer Priorität gestartet wird; noch besser wäre es, wenn man die Priorität setzen könnte.
Hier ein Programmbeispiel, für das man benötigt:
einen Timer: SekundenTakt einen Button: Button1 Labels: Datum Zeit Time0 Time1
PUBLIC SUB Form_Open() 'Timer starten SekundenTakt.Delay = 1 SekundenTakt.Enabled = TRUE END SUB PUBLIC SUB SekundenTakt_Timer() Datum.Text = fHeute() Zeit.Text = fUhrzeit() END SUB PUBLIC SUB Button1_Click() DIM i AS Long DIM M AS Single DIM intMultiplikationen AS Integer = 50 * 1000 * 1000 Time1.Text = "" Time0.Text = Zeit.Text WAIT 0.001 FOR i = 0 TO intMultiplikationen M = 1234567.8 * 2345678.9 NEXT WAIT 0.001 Time1.Text = Zeit.Text END SUB PUBLIC FUNCTION fHeute() AS String DIM Tag AS String = CStr(Day(Now)) DIM Mon AS String = CStr(Month(Now)) DIM Jar AS String = CStr(Year(Now)) IF Len(Tag) = 1 THEN Tag = "0" & Tag IF Len(Mon) = 1 THEN Mon = "0" & Mon RETURN Tag & ". " & Mon & ". " & Jar END FUNCTION PUBLIC FUNCTION fUhrzeit() AS String DIM St AS String = CStr(Hour(Now)) DIM Mi AS String = CStr(Minute(Now)) DIM Se AS String = CStr(Second(Now)) IF Len(St) = 1 THEN St = "0" & St IF Len(Mi) = 1 THEN Mi = "0" & Mi IF Len(Se) = 1 THEN Se = "0" & Se RETURN St & " : " & Mi & " : " & Se & " Uhr" END FUNCTION
Gruß
Hans35