Seite 1 von 2

Zeit

Verfasst: 29.08.2006 21:00
von Thomas
Hallo,
hab mal wieder ne Frage:

Wie kann man programieren:

Wenn 5 Sekunden vergangen sind soll das oder das passieren.

:|

Verfasst: 29.08.2006 21:07
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

Verfasst: 29.08.2006 21:17
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

Verfasst: 29.08.2006 21:23
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!

Verfasst: 29.08.2006 21:29
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.

Verfasst: 29.08.2006 21:38
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

Verfasst: 30.08.2006 00:04
von #NULL
>> Wenn 5 Sekunden vergangen sind soll das oder das passieren
einmalig, oder wiederholend im 5-sec takt?

Verfasst: 30.08.2006 00:10
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)

Verfasst: 30.08.2006 10:17
von Thomas
Ok, Danke für eure Tipps
werds mal ausprobieren... :D

Verfasst: 30.08.2006 16:39
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