Hallo,
wenn ich mit AddWindowTimer(0, 1, 60000) einen Timer erstelle
bekomme ich alle 60 Sekunden ein #PB_Event_Timer Ereignis.
Soweit so gut.
Kann ich auch irgendwie ermitteln wieviele Millisekunden
es bis zum nächsten #PB_Event_Timer Ereignis noch sind?
Wo speichert die Funktion den aktuellen Stand ab?
AddWindowTimer Zeit bis zum nächsten #PB_Event_Timer Ereignis
- jacdelad
- Beiträge: 336
- Registriert: 03.02.2021 13:39
- Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
- Wohnort: Riesa
- Kontaktdaten:
Re: AddWindowTimer Zeit bis zum nächsten #PB_Event_Timer Ereignis
Das geht meines Wissens nicht oder nicht so einfach. Speicher am besten den Wert von ElapsedMilliseconds() plus die 60 Sekunden in einer Quadvariable. Dann kannst du mit einer weiteren Abfrage (MeinWert-ElapsedMilliseconds()) sofort die fehlenden Millisekunden ermitteln.
Übrigens sind die Timer-Ereignisse nicht immer 100%-ig genau. Wenn es dir um dir Messung einer Minute geht, solltest du einen Thread nutzen. Wenn nur alle 60 Sekunden, plsu minus, ein Ereignis ausgelöst werden soll, ist's ok.
Übrigens sind die Timer-Ereignisse nicht immer 100%-ig genau. Wenn es dir um dir Messung einer Minute geht, solltest du einen Thread nutzen. Wenn nur alle 60 Sekunden, plsu minus, ein Ereignis ausgelöst werden soll, ist's ok.
PureBasic 6.03/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
- juergenkulow
- Beiträge: 186
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: AddWindowTimer Zeit bis zum nächsten #PB_Event_Timer Ereignis
Code: Alles auswählen
; Restliche Wartezeit errechnen und ausgeben.
#Wartezeit=60000
If OpenWindow(0, 0, 0, 400, 100, "Timer Example", #PB_Window_SystemMenu)
ProgressBarGadget(0, 10, 10, 380, 20, 0, 100)
AddWindowTimer(0, 1, #Wartezeit)
Start=ElapsedMilliseconds()
TextGadget(1,10,30,200,20,"Restzeit: "+Str(#Wartezeit)+" ms")
Value = 0
Repeat
Event = WaitWindowEvent(1)
If Event = #PB_Event_Timer And EventTimer() = 1
; Debug Restzeit
Start=ElapsedMilliseconds()
Restzeit=#Wartezeit
Value = (Value + 5) % 100
SetGadgetState(0, Value)
Else
Restzeit=#Wartezeit-(ElapsedMilliseconds()-Start)
EndIf
SetGadgetText(1,"Restzeit: "+Str(Restzeit)+" ms")
Until Event = #PB_Event_CloseWindow
EndIf
Re: AddWindowTimer Zeit bis zum nächsten #PB_Event_Timer Ereignis
Hallo juergenkulow und Danke für dein Beispiel.
Aber müsste nicht auch der WindowTimer irgendwo die Restlaufzeit zwischenspeichern
bis er das Timer Ereignis auslöst?
Aber müsste nicht auch der WindowTimer irgendwo die Restlaufzeit zwischenspeichern
bis er das Timer Ereignis auslöst?
- jacdelad
- Beiträge: 336
- Registriert: 03.02.2021 13:39
- Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
- Wohnort: Riesa
- Kontaktdaten:
Re: AddWindowTimer Zeit bis zum nächsten #PB_Event_Timer Ereignis
Ich bin zwar nicht Jürgen (allerdings heißt mein Vater so): Timermäßig stellt Windows uns nur die Funktionen SetTimer_() und KillTimer_() sowie die Message #WM_TIMER und eine mögliche TimerProc zur Verfügung.
https://learn.microsoft.com/de-de/windo ... msg/timers
Exakt das, was auch PureBasic bietet. Intern wird das sicher irgendwie gepsiechert und abgehandelt, aber als Programmierer hat man da meines Wissens keinen Zugriff darauf. Ich sehe es jetzt auch nicht unbedingt als Problem an, eine Variable mit den entsprechenden Informationen zu befüllen...
https://learn.microsoft.com/de-de/windo ... msg/timers
Exakt das, was auch PureBasic bietet. Intern wird das sicher irgendwie gepsiechert und abgehandelt, aber als Programmierer hat man da meines Wissens keinen Zugriff darauf. Ich sehe es jetzt auch nicht unbedingt als Problem an, eine Variable mit den entsprechenden Informationen zu befüllen...
PureBasic 6.03/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Re: AddWindowTimer Zeit bis zum nächsten #PB_Event_Timer Ereignis
Soweit ich weiß, ist das nur ein einfacher Countdown-Zähler im Millisekundenbereich, der ab
den eingestellten ms rückwärts zählt und bei Erreichen von 0 ein Event auslöst und dann wieder
von vorne anfängt. Halt solange, bis man ihn killt. Ob der nun angehalten wird, wenn er einen Event
ausglöst hat ? Kann ja was dauern, wenn man nach dem Timerevent bestimmte Aufgaben bewältigt.
Ich denke, daß er sich, nachdem er einen Event abgesetzt hat, sich neu initialisiert bzw. von vorne wieder
anfängt, sobald die Routine abgearbeitet ist.
Ist ein interessantes Thema, gerade wie so was intern arbeitet. Vielleicht weiß ja jemand mehr.
Den Timer betrachte ich immer als Eieruhr zw. Sanduhr.
In der Richtung gibt es ja verschiedene Sachen : QueryPerformanceCounter, Ellapsedmilliseconds, GetTickCounts usw.
den eingestellten ms rückwärts zählt und bei Erreichen von 0 ein Event auslöst und dann wieder
von vorne anfängt. Halt solange, bis man ihn killt. Ob der nun angehalten wird, wenn er einen Event
ausglöst hat ? Kann ja was dauern, wenn man nach dem Timerevent bestimmte Aufgaben bewältigt.
Ich denke, daß er sich, nachdem er einen Event abgesetzt hat, sich neu initialisiert bzw. von vorne wieder
anfängt, sobald die Routine abgearbeitet ist.
Ist ein interessantes Thema, gerade wie so was intern arbeitet. Vielleicht weiß ja jemand mehr.
Den Timer betrachte ich immer als Eieruhr zw. Sanduhr.
In der Richtung gibt es ja verschiedene Sachen : QueryPerformanceCounter, Ellapsedmilliseconds, GetTickCounts usw.
PB 5.60