Seite 1 von 1
Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 19:40
von Zerosurf
Code: Alles auswählen
Nb_Monitors = ExamineDesktops()
Repeat
If Nb_Monitors > 1
Debug "You have "+ExamineDesktops()+" monitors connected!"
Else
Debug "You have "+ExamineDesktops()+" monitor connected!"
EndIf
Delay(1000)
ForEver
Wie schaffe ich es hier, daß die Debug Meldung nur bei Änderung des Ereignisses erscheint und dann auch nur einmal?
Steh grad voll daneben?
__________________________________________________
Quote>Code
01.10.2016
RSBasic
Re: Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 21:47
von Rudi
Diesen:
Code: Alles auswählen
Nb_Monitors = ExamineDesktops()
Repeat
If Nb_Monitors <> ExamineDesktops()
Nb_Monitors = ExamineDesktops()
Debug "You have "+Nb_Monitors+" monitors connected!"
EndIf
Delay(1000)
ForEver
Re: Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 22:13
von Zerosurf
Genau das wars!
Ich hab den Code nochmal angepasst:
Code: Alles auswählen
Nb_Monitors = ExamineDesktops()
Select Nb_Monitors
Case 1
Debug "You have "+ExamineDesktops()+" monitor connected!"
Case 2
Debug "You have "+ExamineDesktops()+" monitors connected!"
EndSelect
Repeat
If Nb_Monitors <> ExamineDesktops()
Nb_Monitors = ExamineDesktops()
Select Nb_Monitors
Case 1
Debug "You have "+ExamineDesktops()+" monitor connected!"
Case 2
Debug "You have "+ExamineDesktops()+" monitors connected!"
EndSelect
EndIf
Delay(1000)
ForEver
...damit er von Anfang an den Status anzeigt!
Könnte ich den Code noch vereinfachen, oder passt der so?
Re: Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 22:22
von RSBasic
Zerosurf hat geschrieben:Könnte ich den Code noch vereinfachen
Ja, der Abfrage-Code hast du einfach dupliziert. Das ist eine schlechte Vorgehensweise. Wenn du diese Abfrage anpassen möchtest, dann musst du stets daran denken, beide Codes anzupassen. Wenn du einmal vergisst, dann entstehen ganz schnell nicht nachvollziehbare Bugs.
Wenn du einen Code mehrmals verwenden möchtest, dann füg diesen in eine Prozedur ein, die du wiederverwenden kannst:
Code: Alles auswählen
EnableExplicit
Define Nb_Monitors
Procedure NennEsWieDuWillst()
Protected Nb_Monitors
Nb_Monitors = ExamineDesktops()
Select Nb_Monitors
Case 1
Debug "You have "+ExamineDesktops()+" monitor connected!"
Case 2
Debug "You have "+ExamineDesktops()+" monitors connected!"
EndSelect
ProcedureReturn Nb_Monitors
EndProcedure
Nb_Monitors = NennEsWieDuWillst()
Repeat
If Nb_Monitors <> ExamineDesktops()
Nb_Monitors = NennEsWieDuWillst()
EndIf
Delay(1000)
ForEver
Re: Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 22:28
von Zerosurf
Das hab ich versucht, nur ich Depp hab den "EndProcedure" Befehl vergessen und deshalb hats dann auch nicht funktioniert! Vielen Dank für die Hilfe! Und ich wollte schon Python versuchen zu lernen, aber irgendwie gefällt mir PB einfach besser!

Re: Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 22:31
von RSBasic
Zerosurf hat geschrieben:aber irgendwie gefällt mir PB einfach besser!

Mir auch.

Re: Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 22:42
von Rudi
Oder so:
Code: Alles auswählen
Repeat
Nb_Monitors1 = ExamineDesktops()
If Nb_Monitors1 <> Nb_Monitors2
Nb_Monitors2 = Nb_Monitors1
Debug "You have "+Nb_Monitors2+" monitor(s) connected!"
EndIf
Delay(1000)
ForEver
Re: Schleife - Ereigniss erst wenn Änderung?
Verfasst: 01.10.2016 23:54
von Zerosurf
das wäre natürlich die einfachste variante, aber ich wollte a bissl was draus lernen!
