ich bins wieder

sagt mal gibt es eine Alternative zu Delay() ? Ich wüsste gerne wie ich es hinbekomme das nicht das gesamte Programm anhält.

wenn Du uns sagst, was Du vorhast, könnten wir DirJume hat geschrieben:sagt mal gibt es eine Alternative zu Delay() ? Ich wüsste gerne wie ich es hinbekomme das nicht das gesamte Programm anhält.
Code: Alles auswählen
Repeat ...
If StopTasteGedrückt
NichtMehrKlingeln = True
ElseIf StartTasteGedrückt
NichtMehrKlingeln = False
EndIf
If WeckZeitErreicht
If Not NichtMehrKlingeln
Klingeln
EndIf
EndIf
Until ...
Kiffi hat geschrieben:Wenn Du einen Wecker stoppen willst, dann brauchst Du ja
nicht das ganze Programm anhalten (zumal das Anschalten
dann auch nicht mehr funktionieren würde).
Sowas macht man normalerweise mit Setzen und
Abfragen von Variablen
Grüße ... KiffiCode: Alles auswählen
Repeat ... If StopTasteGedrückt NichtMehrKlingeln = True ElseIf StartTasteGedrückt NichtMehrKlingeln = False EndIf If WeckZeitErreicht If Not NichtMehrKlingeln Klingeln EndIf EndIf Until ...
Code: Alles auswählen
If OpenWindow(0, 524, 239, 171, 166, "Wecker", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
StringGadget(1, 40, 50, 90, 20, "")
ButtonGadget(2, 40, 75, 90, 15, "Ok")
TextGadget(3, 40, 30, 90, 15, "Uhrzeit:")
EndIf
Pattern$ = "Musik (*.mp3)"
Pattern = 0
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
If EventGadget()=2
zeit$ = GetGadgetText(1)
Repeat
uhrzeit$ = FormatDate("%hh:%ii", Date())
Until uhrzeit$ = zeit$
Buffer$=Space(128)
mciSendString_("OPEN bspmusikstueck TYPE MpegVideo ALIAS MP3",Buffer$,128,0)
mciSendString_("PLAY MP3",0,0,0)
EndIf
EndIf
Until Quit=1
Code: Alles auswählen
Define Time = ElapsedMilliseconds() + 4000
Repeat
If ElapsedMilliseconds() >= Time
Debug "4s um"
End
EndIf
ForEver
Code: Alles auswählen
Enumeration
#Window
#Timer
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
AddWindowTimer(#Window, #Timer, 4000)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Timer
Select EventTimer()
Case #Timer
End
EndSelect
EndSelect
ForEver
Code: Alles auswählen
If OpenWindow(0, 524, 239, 171, 166, "Wecker", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
StringGadget(1, 40, 50, 90, 20, "")
ButtonGadget(2, 40, 75, 90, 15, "Ok")
TextGadget(3, 40, 30, 90, 15, "Uhrzeit:")
EndIf
Pattern$ = "Musik (*.mp3)"
Pattern = 0
Repeat
EventID = WaitWindowEvent() ; <---- Hier wird solange gewartet bis ein Event eintritt (Klick oder Fenster verschieben usw.)
If EventID = #PB_Event_CloseWindow; <--- Dieser Teil ist richtig ;)
Quit = 1
EndIf
If EventID = #PB_Event_Gadget ; <-- sieht noch gut aus
If EventGadget()=2
zeit$ = GetGadgetText(1)
Repeat ;----------------------------- aber hier .... Hier werden nur drei zeilen abgeklappert
uhrzeit$ = FormatDate("%hh:%ii", Date());--- aber innerhalb dieser zeilen ist kein "Event abholen" mit drin
Until uhrzeit$ = zeit$ ;--------------------- deswegen "hängt" es hier, bis die zeit erreicht ist
Buffer$=Space(128) ; und das lagert man am besten ausserhalb der Eventschleife....
mciSendString_("OPEN bspmusikstueck TYPE MpegVideo ALIAS MP3",Buffer$,128,0)
mciSendString_("PLAY MP3",0,0,0)
EndIf
EndIf
Until Quit=1
Code: Alles auswählen
If OpenWindow(0, 524, 239, 171, 166, "Wecker", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
StringGadget(1, 40, 50, 90, 20, "")
ButtonGadget(2, 40, 75, 90, 15, "Ok")
TextGadget(3, 40, 30, 90, 15, "Uhrzeit:")
EndIf
Pattern$ = "Musik (*.mp3)"
Pattern = 0
Repeat
EventID = WaitWindowEvent(20) ; <--- hier werden nur 20ms gewartet, wenn dann nix passiert ist gehts weiter
If EventID = #PB_Event_CloseWindow
Quit = 2 ;<--- hier eine neue Abbruch bedingung, damit die musik nur
EndIf ;<----gespielt wird, wenn die zeit auch erreicht wurde und nicht weil das fenster zuging
If EventID = #PB_Event_Gadget
If EventGadget()=2 ;<-- hier wird nur der zeit$ der Inhalt des Stringgadgets übergeben, mehr
zeit$ = GetGadgetText(1) ;<-- ist nicht nötig
EndIf
EndIf
uhrzeit$ = FormatDate("%hh:%ii", Date()); <-- hier klappern wir mal ein wenig mit der Uhr, damit wir was zum prüfen haben...
If uhrzeit$ = zeit$ ; hier prüfen wir nur noch ob die zeit erreicht wurde und machen eine neue
Quit = 1 ;<.... abbruchbedingung die wir gleich abfragen können....
EndIf
Until Quit>0 ; <--- AHA hier ist ende wenn Quit Grösser als 0 ist, also wenn fenster zu oder zeit erreicht
If Quit = 1 ; hier fragem wir bloss noch nach ob in der schleife die zeit erreicht war
Buffer$=Space(128)
mciSendString_("OPEN bspmusikstueck TYPE MpegVideo ALIAS MP3",Buffer$,128,0)
mciSendString_("PLAY MP3",0,0,0)
EndIf
; ansonsten dann das glorreiche
End