Zeitanzeige aktualisieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Okay sorry wegen doppelpost :roll:
Aber ich halte es für besser hier gleich eine weitere frage zu stellen als noch mehr Themen zu eröffnen.

Meine Frage:

Wie man im Quell Text lesen kann so das ein Timer werden.
Ich lasse nun die System Zeit auslesen in 3 Variabeln HH$ MM$ und SS$.
Mein proplem ist jezt das die Zeit nur ausgelesen wird wenn ich eine Akton durchführe, aber die zeit soll sändig ausgelesen werden. hier noch mal der text:

Code: Alles auswählen

Open_Window_0()
Repeat

HH$ = FormatDate("%hh", Date())
MM$ = FormatDate("%ii", Date())
SS$ = FormatDate("%ss", Date())
  
  Event = WaitWindowEvent()
  Select event
  Case #PB_EventGadget ; verzweigung bei Gadgetevents
  
  
        Select EventGadgetID()
          Case (#Button_0)
            
            If HH$=GetGadgetText(#String_0)
              If MM$=GetGadgetText(#String_1)      
                If SS$=GetGadgetText(#String_2)      
                  MessageRequester("Überschrift","Ok Button",#PB_MessageRequester_Ok)
                  EndIf
                EndIf 
            EndIf  
          Case (#Button_1)
            Gosub Ende
            Return
            ;MessageRequester("Überschrift","Abbruch Button",#PB_MessageRequester_Ok)
        EndSelect
        EndSelect

Until Event = #PB_EventCloseWindow
Ende:
End
Ich habe es schon mit einem "Gosub" versucht aber das is auch nicht das wahre da die zeit immer nur aus gelesen wird wenn ich mit der Maus über das fenster fahre.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Aber ich halte es für besser hier gleich eine weitere frage zu stellen als
> noch mehr Themen zu eröffnen.

wenn Dein jetziges Problem nicht mehr zum ursprünglichen Thema passt,
solltest Du einen neuen Thread eröffnen.

Edit: Danke an den unbekannten Mod, der dieses Thema gesplittet hat!

> Mein proplem ist jezt das die Zeit nur ausgelesen wird wenn ich eine
> Akton durchführe,

dann verwende anstelle von [c]WaitWindowEvent()[/c] den Befehl
[c]WindowEvent()[/c]. Hier wird nicht auf ein Ereigniss gewartet, sondern die
Repeat-Schleife wird kontinuierlich durchlaufen.

Wichtig: Damit Dein System bei Verwendung von [c]WindowEvent()[/c] nicht
blockiert, solltest Du anderen Applikationen auch ein wenig Zeit
zukommen lassen.

Das geschieht mit dem Befehl [c]Delay(AnzahlMillisekunden)[/c]. Für
AnzahlMillisekunden gibst Du einen Wert an, der angibt, wieviel Zeit für
andere Applikationen übrigbleibt. Beispielsweise:

Code: Alles auswählen

Delay(AnzahlMillisekunden)
Dein Code sähe dann ungefähr so aus:

Code: Alles auswählen

Open_Window_0()
Repeat

HH$ = FormatDate("%hh", Date())
MM$ = FormatDate("%ii", Date())
SS$ = FormatDate("%ss", Date())
 
  Event = WindowEvent()
  Select event
    [...]
  EndSelect
  Delay(1)
Until Event = #PB_EventCloseWindow
End
> Ich habe es schon mit einem "Gosub" versucht aber das is auch nicht
> das wahre

ja, wenn es sich vermeiden lässt, dann verwende Gosub nach Möglichkeit
nicht.

Grüße ... Kiffi
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Oder verwende ein Timer-Event, wenn du hier im Forum oder im CodeArchiv danach suchst müsstest du glaube ich fündig werden :allright:

P.S.: Ich hab für dieses Posting doch mal einen eigenen Thread aufgemacht, kommt der Foren-Statistik zu Gute* ;)

*und natürlich der Übersichtlichkeit und der Suchfunktion
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Okay den ein neues Thema. Danke.

Ich habe mit absicht nicht in das Code Archiv nach gesehen, da ich nicht nur scripte zusammen bauen möchte sondern nach möglichkeit selber schreiben möchte.

Ich stelle auch wie hier im Thema Fragen wenn ich was nicht hin bekomen habe um dann aus dem fehler zu lernen ;)

@Kiffi danke es funktioniert super :)
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Magix-Soft <Kain> hat geschrieben: Ich habe mit absicht nicht in das Code Archiv nach gesehen, da ich nicht nur scripte zusammen bauen möchte sondern nach möglichkeit selber schreiben möchte.

Ich stelle auch wie hier im Thema Fragen wenn ich was nicht hin bekomen habe um dann aus dem fehler zu lernen ;)
Das ist eigentlich sehr lobenswert :)
Du solltest aber nicht vergessen, dass man aus dem Code anderer auch etwas lernen kann, zumindest solange man versucht ihn zu verstehen und nicht einfach nur, wie du so schön gesagt hast, die Skripte zusammenbaut.

Insgesamt bin ich der Meinung, dass du für's Programmieren schonmal die richtige Grundeinstellung hast :allright:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Ja das ist richtig das man aus codes andere was lernen kann.
ganz geringe kentnisse habe ich ja schon also habe schon mit ähnlichen sache umher hantiert. Mt dem RPG Maker 2k/2k3/XP nur ist das nicht das selbe wie eine Progammiersprache
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Auch wenn ich weiss, dass Kiffi das nur mal eben andeuten wollte, finde ich dennoch man sollte es dann auch gleich richtig zeigen:

Code: Alles auswählen

Open_Window_0()
Repeat

HH$ = FormatDate("%hh", Date())
MM$ = FormatDate("%ii", Date())
SS$ = FormatDate("%ss", Date())
 
  Event = WindowEvent()
  Select event
    Case 0
      Delay(1)
    [...]
  EndSelect
Until Event = #PB_EventCloseWindow
End
Weil man sieht leider viel zu oft, dass das Delay bei WindowEvent() eben so wie oben verwendet wird, was technisch gesehn unsinnig ist.
Wieso sollte man nach jedem regulären Event den Programmablauf verzögern ?
Das würde dann zu recht seltsamen Nebeneffekten (ruckeln, Dauereieruhr, ...) führen.
(Und somit die näxte Frage schon wieder aufwerfen.)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Auch wenn ich weiss, dass Kiffi das nur mal eben andeuten
> wollte, finde ich dennoch man sollte es dann auch gleich richtig zeigen:

öh, nee, das war schon so gemeint, wie ich das geschrieben habe.

> Weil man sieht leider viel zu oft, dass das Delay bei WindowEvent() eben
> so wie oben verwendet wird, was technisch gesehn unsinnig ist.

ist das so? Wenn ja, dann habe ich wieder was gelernt.

Teste ich heute abend mal etwas genauer.

Danke für den Tipp & Grüße ... Kiffi
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

PB_Hilfe hat geschrieben: Hinweis: Das 'Delay' sollte nicht nach jedem Ereignis eingefügt werden, denn wenn viele Ereignisse (wie Refresh, Gagdget Updates, etc.) auftreten, wird die Anwendung 20 ms (zumindest unter Windows) zwischen jedem Ereignis warten. Deshalb muss das Delay dann eingefügt werden, wenn keine Ereignisse empfangen werden
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 »

Das würde aber so aussehen:

Code: Alles auswählen

Open_Window_0()
Repeat

HH$ = FormatDate("%hh", Date())
MM$ = FormatDate("%ii", Date())
SS$ = FormatDate("%ss", Date())
 
  Event = WindowEvent()
  Select event
    Case 0
      ;[...]
    Case 1
      ;[...]
    Default
      Delay(1)
  EndSelect
Until Event = #PB_EventCloseWindow
End 
Aber ein Timer ist immer vorzuziehen!
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
Antworten