Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Kleine Helferlein

OOP Timer

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.Mitgliedruohki 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
  • Das Code-Beispiel wurde am 07.12.2013 von Mitgliedruohki angelegt.
  • Die aktuellste Version wurde am 07.12.2013 von Mitgliedruohki gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen