Zeit messen

Anfängerfragen zum Programmieren mit PureBasic.
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 »

Achso, Du hast Dir meinen Code nicht angesehen /:->
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
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Ja okay... da müsste ein Pipen zuhören sein über den system speeker (ist bei mir defekt) aber wie kann ich eine aktion nach abgelaufener zeit machen???
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 »

Alle was in in der Procedure Timer steht, wird alle soundsoviel Sekunden, siehe Inputrequester, ausgeführt. Also schreib was anderes rein, was er anstatt von beep machen soll.
Er wird es dann, alle soundsoviel Sekunden ausführen, bis das Fenster geschlossen wird. Im Fenster kannste alles andere Einbauen, was du brauchst. Der Timer arbeitet unabhängig ständig weiter.
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
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

ach sorum läuft das :roll:

naja jedenfals danke :)
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Heyho!
ne andere Möglichkeit fürn Timer:

Code: Alles auswählen

for i=0 to 10000
 delay(1)
 windowevent()
next
Wartet 10 Sekunden, und das Fenster ist noch zu gebrauchen..
Ist nicht immer genau, (jenachdem wieviele Callback-Prozeduren du in diese Schleife einbaust) aber es funktioniert und ist soweit ich weis plattforunabhängig und verständlich...

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
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 »

@Tafkadasom2k5
Vielleicht liest Du erstmal, worum es geht. Es ging einzig und allein, um eine Lösung ohne Delay :twisted:
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
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

ts-soft hat geschrieben:@Tafkadasom2k5
Vielleicht liest Du erstmal, worum es geht. Es ging einzig und allein, um eine Lösung ohne Delay :twisted:
LOL und jetzt ließt du mal genau, bevor du hier den Macker makierst ;)

Magix-Soft<Kain> hat geschrieben:
ich kann allerdings nicht mit Delay arbeiten weil ja das Programm an für diese Zeit still stehen bleibt und das darf nicht passieren da man auch andere aktionen werend dieser zeit machen kann.


Ja nee, aber sonst hast du schon irgendwie recht... -.- :roll:

Gr33tz
Tafkadasom2k5 :allright: /:->

P.S.:Is nur Spaß, weissu doch :allright: :)
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
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 »

Tafkadasom2k5 hat geschrieben: LOL und jetzt ließt du mal genau, bevor du hier den Macker makierst ;)
Zu meiner Zeit hieß es noch "großen Macker" :mrgreen:

Deine Lösung ist in einem ereignisgesteuerten Windows-Programm eigentlich nicht nutzbar, da alle Ereignisse, ausser die von Windows autom. abgearbeiten, verpuffen.
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
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

ts-soft hat geschrieben:
Tafkadasom2k5 hat geschrieben: LOL und jetzt ließt du mal genau, bevor du hier den Macker makierst ;)
Zu meiner Zeit hieß es noch "großen Macker" :mrgreen:

Deine Lösung ist in einem ereignisgesteuerten Windows-Programm eigentlich nicht nutzbar, da alle Ereignisse, ausser die von Windows autom. abgearbeiten, verpuffen.
Ja, da hast du recht :)

Genau aus dem Grund schrieb ich folgendes:
[...],(jenachdem wieviele Callback-Prozeduren du in diese Schleife einbaust) [...]


Genau das sollte das eben heissen...hab michn bissl blöd ausgedrückt..

Also nochmal, nicht dass jetzt jemand denkt "das geht jetzt einfach so":
In meiner Prozedur muss IN der For-Schleife ein eigenes Event-Handling stattfinden.
Zumindest das gröbste. Ich mach deshalb bei solchen progs für das gesamte Event-Handling immer eine eigene Prozedur, sodass man diese überall frei hinsetzen kann.

Gr33tz
Tafkadasom2k5

EDIT:Hoffe, dass ich den Missverständnis-Modus erfolgreich deaktivieren konnte ;)
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Hi,

das ist doch ganz einfach:

Code: Alles auswählen

OpenConsole()


EndTime.l = ElapsedMilliseconds() ;Endzeit - milisekunden 
DifTime.l = ElapsedMilliseconds() 


DifStartTime.l = ElapsedMilliseconds() ;Startzeit - milisekunden ;Vorlagecode fr dein Programm
DifTime.l = 1000 * 3;Zeit zwischen den Ausfhrungen in Millisekunden  ;Vorlagecode fr dein Programm
PrintN("Starte und warte 3 Sekunden.")

Repeat
  If Abs(ElapsedMilliseconds() - DifTime) > DifStartTime ;Vorlagecode fr dein Programm
    PrintN("es sind wieder 3 Sekunden um.") ;Vorlagecode fr dein Programm
    DifStartTime.l = ElapsedMilliseconds() ;Neue Startzeit setzen ;Vorlagecode fr dein Programm
  EndIf ;Vorlagecode fr dein Programm
  Delay(1) ; kann weggelassen werdne, ist nur damit im Beispiel der Prozessor nich voll ausgelastet wird.
Until 0

CloseConsole()
das ABS() sollte auf jedenfall benutzt werden, damit es auch dann klappt, denn der zähler duch das Bebriebssytem auf Null gesetzt wird. bei Windows98 passiert das glaube ich nach 49 Tagen.
Besser wäre für den Falls noch eine If-Abfrage, aber dürfte so auch gehen.

Bei dem Code ist es vollkommen egal was im Programm geschieht, sobald mehr als X Millisekunden vorbei sind, wird der Code ausgeführt. Man muß nur drauf achten, das ein Wartebefehl auch unterbrochen wird oder je nach Code halt ein Thread genutzt wird.


Gruß
Thorsten
Antworten