Schleife - Ereigniss erst wenn Änderung?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Schleife - Ereigniss erst wenn Änderung?

Beitrag 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
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: Schleife - Ereigniss erst wenn Änderung?

Beitrag 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
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: Schleife - Ereigniss erst wenn Änderung?

Beitrag 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?
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Schleife - Ereigniss erst wenn Änderung?

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: Schleife - Ereigniss erst wenn Änderung?

Beitrag 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! ;)
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Schleife - Ereigniss erst wenn Änderung?

Beitrag von RSBasic »

Zerosurf hat geschrieben:aber irgendwie gefällt mir PB einfach besser! ;)
Mir auch. :)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: Schleife - Ereigniss erst wenn Änderung?

Beitrag 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
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: Schleife - Ereigniss erst wenn Änderung?

Beitrag von Zerosurf »

das wäre natürlich die einfachste variante, aber ich wollte a bissl was draus lernen! ;)
PureBasic 6.00 | Windows 10 pro (x64)
Antworten