onny hat geschrieben:hm... versteh ich nich so ganz 0.o
glaub ich werd mich lieber mal mit threads beschäftigen... hoffe da gibts ein paar gute beispiele ^^
thx für die lösungen!
threads sind viel komplexer, beiss dich erstmal durch die timer durch
ein simpler timer:
Code: Alles auswählen
TimeStep.l = 50
Timer.l = Elapsedmilliseconds() + TimeStep
Zaehler.l = 0
Repeat
If Timer <= Elapsedmilliseconds()
Timer + TimeStep
Zaehler +1
EndIf
Delay(0) ; <- CPU-Schoner
Until Abbruchbedingung = #True
hier wird Zähler alle 50ms hochgezählt. das Delay(0) ist nur dazu da, um die CPU nicht auszulasten, es ist für den timer an sich nicht notwendig.
auch wenn das einzelne zählereignis mal ein paar millisekunden falsch liegen kann, dadurch, dass der timer um einen festen wert erhöht wird und nicht auf die aktuellen millisekunden gesetzt, wird im großen und ganzen eine relative geauigkeit erreicht. wenn z.b. das programm längere zeit in einer proc festhängt, holt die schleife alle versäumten steps nach.
Diesen Zähler kann man jetzt unter anderem für eine art ereignistabelle nutzen:
Code: Alles auswählen
LetztEreignis.l = 4
Dim EreignisTime.l(LetztEreignis)
Dim EreignisText.s(LetztEreignis)
EreignisTime(0) = 50 : EreignisText(0) = "Los geht's"
EreignisTime(1) = 100 : EreignisText(1) = "Dann rödel ich mal"
EreignisTime(2) = 250 : EreignisText(2) = "Ha, die Mitte"
EreignisTime(3) = 500 : EreignisText(3) = "Fast fertig"
EreignisTime(4) = 550 : EreignisText(4) = "Das war's"
Ereignisnummer.l = 0
Zaehler.l = 0
TimeStep.l = 50
Timer.l = Elapsedmilliseconds() + TimeStep
Repeat
; der Timer wie gehabt
If Timer <= Elapsedmilliseconds()
Timer + TimeStep
Zaehler +1
EndIf
;die Ereignissteuerung
If Zaehler = EreignisTime(Ereignisnummer)
Debug EreignisText(Ereignisnummer)
Ereignisnummer +1
If Ereignisnummer > LetztEreignis
Abbruchbedingung = #True
EndIf
EndIf
Delay(0) ; <- CPU-Schoner
Until Abbruchbedingung = #True
voila

btw: diese "Ereignisse" sind selbstgemachte, und nicht zu verwechseln mit Window-Events.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.