Zeit

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Zeit

Beitrag von Thomas »

Hallo,
hab mal wieder ne Frage:

Wie kann man programieren:

Wenn 5 Sekunden vergangen sind soll das oder das passieren.

:|
v6.00
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Hi,

entweder den Befehl Delay() nehmen (in der Hilfe nachgucken), oder dir selber einen Timer mithilfe von Elapsedmilliseconds() basteln, falls es das in 3.3 schon gibt.

Ansonsten bliebe noch die Option dies überdie Systemzeit zu regeln, aber ich weiß nicht, ob es die Befehle dazu in 3.3 schon gibt. Also das wären Date() und Seconds().

Fertiges Beispiel weiß ich jetzt grad nicht.

MFG
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, 0, 200, 200, "Test")

  SetTimer_(WindowID(0), 0, 5000, 0)
  
  Repeat
    Select WaitWindowEvent()
      
      Case #PB_Event_CloseWindow
        Break
        
      Case #WM_TIMER
        Debug "Schon wieder 5 Sekunden um"
    
    EndSelect
  ForEver
EndIf

KillTimer_(WindowID(0), 0)
Für PB3.3 sind wohl kl. Anpassungen nötig, kann ich nicht testen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Captn. Jinguji
Beiträge: 397
Registriert: 07.06.2005 19:47
Computerausstattung: PB 4.73x64, i7, WIN 10x64, ATI NVidia RTX 2070
Wohnort: Witten

Beitrag von Captn. Jinguji »

ts-soft hat geschrieben:

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, 0, 200, 200, "Test")

  SetTimer_(WindowID(0), 0, 5000, 0)
  
  .
.
.
KillTimer_(WindowID(0), 0)
Für PB3.3 sind wohl kl. Anpassungen nötig, kann ich nicht testen
Ja, isses denn wahr ? Genau für heute abend hatte ich mir vorgenommen, für die Refreshfunktion eines Windows herauszusuchen, wie DAS denn wohl gehe..wollte nur mal eben vorher ins PureBoard schauen.....und genu zu dem Zeitpunkt wird die Lösung hier reingesetzt....

Danke!
Ist das Kunst hier, oder kann das weg ?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Diese Art der Timernutzung ist nicht so ganz genau und effektiv. Besser im
Callback (ist genauer), und dann kann man auch mehrere Timer einsetzen.
Einfach mal in die API-Doku schaun. In PBOSL ist der Timer auch als
HighRes-Timer enthalten, was dann sehr genau wird :wink:

Nur so als ergänzender Hinweis, kann auch ignoriert werden.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Captn. Jinguji
Beiträge: 397
Registriert: 07.06.2005 19:47
Computerausstattung: PB 4.73x64, i7, WIN 10x64, ATI NVidia RTX 2070
Wohnort: Witten

Beitrag von Captn. Jinguji »

ts-soft hat geschrieben:Diese Art der Timernutzung ist nicht so ganz genau und effektiv. Besser im
Callback (ist genauer), und dann kann man auch mehrere Timer einsetzen.
Einfach mal in die API-Doku schaun. In PBOSL ist der Timer auch als
HighRes-Timer enthalten, was dann sehr genau wird :wink:

Nur so als ergänzender Hinweis, kann auch ignoriert werden.
Nee nee, den ergänzenden Hinweis nehme ich auch noch gern zu den Akten, jedoch nicht für die gerade in der Mache befindliche Anwendung,
die eine kleine Voyeur-Funktion für downloads von Dateien, die unabhängige andere Programme durchführen, benötigt.
Dabei schwebten mir - man glaubt es kaum - 5000ms als Defaultwert vor (die der Anwender natürlich ändern kann). Da nur ein erweitertes Dateilisting durchgeführt wird, ist hochgenaues timing unnötig. Aber es ist gut zu wissen , dass es Varianten gibt.

Und die API Doku war ja genau das, was ich heute abend durchforsten wollte.

Thanx alot
Ist das Kunst hier, oder kann das weg ?
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

>> Wenn 5 Sekunden vergangen sind soll das oder das passieren
einmalig, oder wiederholend im 5-sec takt?
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

in 3.3 gibts kein elapsedmilliseconds...

evtl. per GetTickCount_() (API) lösen.

bei nem screen-game kann man auch auf framerate syncen. (vorsicht: CPU-auslastung)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Ok, Danke für eure Tipps
werds mal ausprobieren... :D
v6.00
Benutzeravatar
Ja!
Beiträge: 271
Registriert: 02.01.2006 16:13
Wohnort: Stuttgart

Beitrag von Ja! »

ts-soft hat geschrieben: In PBOSL ist der Timer auch als
HighRes-Timer enthalten, was dann sehr genau wird
Der ist auch nicht genauer als die aus der API.
Beide sind min. 1ms.

Es gibt auch die Möglichkeit, auf Nanosekunden genau zu messen, aber da dies nicht jedes System unterstützt (oder mittlerweile doch?), würde ich das nicht empfehlen..

Gruß
Udo
PureBasic 3.94 ; 4.2 ; 4.3
Antworten