Zum Inhalt springen

Diskussion:Gambas: Timer

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Abschnitt hinzufügen
Aus Wikibooks

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

Beginne eine Diskussion über Gambas: Timer

Eine Diskussion beginnen