Code-Beispiel
OOP Timer
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | ruohki | 07.12.2013 |
Hallo
manchmal möchte man einfach und schnell zeitgesteuerte Events auslösen. Mit folgendem Code kann men einfach einen Timer in eine Schleife einbinden.
'Timer.cls
Dim Shared _Timer as Sub(TimerName as String)
Type udtTimer
Private:
_Timer_Old as Double
_TimerName as String
_TimerCallBack as Any Ptr
_Interval as Double
Public:
Declare Constructor(TimerName as String, Interval as Integer, CallBack as Any Ptr)
Declare Sub DoEvents()
End Type
Constructor udtTimer(TimerName as String, TimerInterval as Integer, CallBack as Any Ptr)
_Interval = TimerInterval / 1000
_TimerCallBack = CallBack
_TimerName = TimerName
End Constructor
Sub udtTimer.DoEvents()
If _Timer_Old = 0 Then
_Timer_Old = Timer
End If
Dim _Timer_Now as Double = Timer
If _Timer_Now >= _Timer_Old + _Interval Then
_Timer_Old = Timer
_Timer = _TimerCallBack
_Timer(_TimerName)
End If
End Sub
Beispielprogramm
#include "timer.cls"
Declare Sub Main()
Declare Sub Timer_Timer(TimerName as String)
Dim Shared Counter1 as Integer = 0
Dim Shared Counter2 as Integer = 0
CLS
Main()
End
Sub Main()
Dim myTimer1 as udtTimer = Type<udtTimer>("Timer1", 2000, @Timer_Timer)
Dim myTimer2 as udtTimer = Type<udtTimer>("Timer2", 1000, @Timer_Timer)
Do
Sleep 1
myTimer1.DoEvents
myTimer2.DoEvents
Loop
End Sub
Sub Timer_Timer(TimerName as String)
If TimerName = "Timer1" Then
Counter1 += 1
Locate 1, 0: Print "Timer Event: " & TimerName & " Aufruf Nr: " & Counter1
Else
Counter2 += 1
Locate 2, 0: Print "Timer Event: " & TimerName & " Aufruf Nr: " & Counter2
End IF
End Sub
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|