Seite 1 von 3

Schleifenproblem If - Else - EndIf/Ist Select Case besser ?

Verfasst: 21.04.2008 19:28
von Ironsmurf
Hallo zusammen

bastle mir gerade ein Windowsprogramm für meine Relaiskarte, funktioniert auch alles einwandfrei, nur der Dateiaufruf macht Probleme.
Das Programm startet alles richtig, lässt sich aber nur schwer oder garnicht beenden. Resourcen werden dabei laut CPU-Monitor fast nicht verbraucht.
Vielleicht hat jemand einen Tip für mich.
Würde auch gerne mit Select Case arbeiten, kann es aber irgendwie nicht richtig einbinden.

Nochmals Danke an alle die mir bis jetzt geholfen haben.

Code: Alles auswählen

If OpenWindow(0,000,300,1274,58,"Relais Butler",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
 
  If CreateGadgetList(WindowID(0))
  
;#########################################################
;Anlegen aller BUTTON´s
;#########################################################
   
    ;Eingabefeld
    StringGadget(00,0010,06,100,20,"", #PB_String_Numeric)
   
    ;Relais 1
    ButtonGadget(01,0140,06,100,20,"PC Licht Ein")
    ButtonGadget(02,0140,32,100,20,"PC Licht Aus")
   
    ;Relais 2
    ButtonGadget(03,0260,06,100,20,"Dolby Sound Ein")
    ButtonGadget(04,0260,32,100,20,"Dolby Sound Aus")
   
    ;Relais 3
    ButtonGadget(05,0380,06,100,20,"Drucker Ein")
    ButtonGadget(06,0380,32,100,20,"Drucker Aus")
   
    ;Relais 4
    ButtonGadget(07,0500,06,100,20,"HD - T - Ein")
    ButtonGadget(08,0500,32,100,20,"HD - T - Aus")
   
    ;Relais 5
    ButtonGadget(09,0620,06,100,20,"HD - U -  Ein")
    ButtonGadget(10,0620,32,100,20,"HD - U -  Aus")
   
    ;Relais 6
    ButtonGadget(11,0740,06,100,20,"HD - V -  Ein")
    ButtonGadget(12,0740,32,100,20,"HD - V -  Aus")
   
    ;Relais 7
    ButtonGadget(13,0860,06,100,20,"HD - W -  Ein")
    ButtonGadget(14,0860,32,100,20,"HD - W -  Aus")
   
    ;Relais 8
    ButtonGadget(15,0980,06,100,20,"HD - X -  Ein")
    ButtonGadget(16,0980,32,100,20,"HD - X -  Aus")
   
    ;Relais ALLE
    ButtonGadget(17,1100,06,160,20,"A L L E  -  E I N")
    ButtonGadget(18,1100,32,160,20,"A L L E  -  A U S")
   
    ;Buttom Go
    ButtonGadget(19,0010,32,100,20,"G O")
    
;#########################################################
;Abfrage aller BUTTON´s - ob sie gedrückt wurden
;#########################################################
   
    Repeat
     
      WWE=WaitWindowEvent()
     
      Select WWE       
       
        Case #PB_Event_Gadget
         
          Select EventGadget()
          
            Case 01
              RunProgram ("SETRelay", "/device:InterfaceA /on:1", "", 2) : Delay(500) : RE1 = 1
              
            Case 02
              RunProgram ("SETRelay", "/device:InterfaceA /off:1", "", 2) : Delay(500) : RE1 = 0
              
            Case 03
              RunProgram ("SETRelay", "/device:InterfaceA /on:2", "", 2) : Delay(500)
              
            Case 04
              RunProgram ("SETRelay", "/device:InterfaceA /off:2", "", 2) : Delay(500)
              
            Case 05
              RunProgram ("SETRelay", "/device:InterfaceA /on:3", "", 2) : Delay(500)
              
            Case 06
              RunProgram ("SETRelay", "/device:InterfaceA /off:3", "", 2) : Delay(500)
              
            Case 07
              RunProgram ("SETRelay", "/device:InterfaceA /on:4", "", 2) : Delay(500)
              
            Case 08
              RunProgram ("SETRelay", "/device:InterfaceA /off:4", "", 2) : Delay(500)
              
            Case 09
              RunProgram ("SETRelay", "/device:InterfaceA /on:5", "", 2) : Delay(500)
              
            Case 10
              RunProgram ("SETRelay", "/device:InterfaceA /off:5", "", 2) : Delay(500)
              
            Case 11
              RunProgram ("SETRelay", "/device:InterfaceA /on:6", "", 2) : Delay(500)
              
            Case 12
              RunProgram ("SETRelay", "/device:InterfaceA /off:6", "", 2) : Delay(500)
              
            Case 13
              RunProgram ("SETRelay", "/device:InterfaceA /on:7", "", 2) : Delay(500)
              
            Case 14
              RunProgram ("SETRelay", "/device:InterfaceA /off:7", "", 2) : Delay(500)
              
            Case 15
              RunProgram ("SETRelay", "/device:InterfaceA /on:8", "", 2) : Delay(500) : RE8 = 1
              
            Case 16
              RunProgram ("SETRelay", "/device:InterfaceA /off:8", "", 2) : Delay(500) : RE8 = 0
              
            Case 17
              RunProgram ("SETRelay", "/device:InterfaceA /on:1", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:2", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:3", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:4", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:5", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:6", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:7", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:8", "", 2) : Delay(1000)
              
            Case 18
              RunProgram ("SETRelay", "/device:InterfaceA /off:1", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:2", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:3", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:4", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:5", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:6", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:7", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:8", "", 2) : Delay(1000)
              
;###########################################################################################
;Eingabe überprüfen und entsprechend verzweigen - If Eingabe = 1 : RunProgram "Cocktail.avi"
;###########################################################################################
              
            Case 19
              Eingabe = Val(GetGadgetText(00))
              Debug Eingabe
              ;SetGadgetText(00, "")
              
;###########################################################################################
;Starte Festplatten und dann denn Movie
;###########################################################################################
              
If Eingabe = 1 And RE8 = 0
  Gosub Start
    RunProgram ("X:\0001 ° yxz.avi")
    
ElseIf Eingabe = 1 And RE8 = 1
    RunProgram ("X:\0001 ° yxz.avi")
 
            EndIf
            
            SetGadgetText(00, "")
             
          EndSelect
         
      EndSelect
      
      
     
    Until WWE = #PB_Event_CloseWindow
   
  EndIf
 
EndIf

Start:
  RunProgram ("SETRelay", "/device:InterfaceA /on:8", "", 2)
    Delay (10000)
      Return
Edit by NicTheQuick: Code-Tags gesetzt

Verfasst: 21.04.2008 19:53
von scholly
Wenn Du "code"-Tags richtig setzt und den Code selber ansprechend einrückst, wächst bestimmt die Test-und Hilfsbereitschaft. :wink:

Verfasst: 21.04.2008 19:54
von ZeHa
Und gleich noch ein Tip, benutze sinnvolle Konstanten und nicht Case 17, Case 18, usw., da hast Du nach 1 Woche keine Ahnung mehr, was eigentlich wo steht :mrgreen:

Verfasst: 21.04.2008 20:05
von Ironsmurf
Hoofe ist besser so - Sorry für den Fehler

Code: Alles auswählen

If OpenWindow(0,000,300,1274,58,"Relais Butler",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
 
  If CreateGadgetList(WindowID(0))
  
;#########################################################
;Anlegen aller BUTTON´s
;#########################################################
   
    ;Eingabefeld
    StringGadget(00,0010,06,100,20,"", #PB_String_Numeric)
   
    ;Relais 1
    ButtonGadget(01,0140,06,100,20,"PC Licht Ein")
    ButtonGadget(02,0140,32,100,20,"PC Licht Aus")
   
    ;Relais 2
    ButtonGadget(03,0260,06,100,20,"Dolby Sound Ein")
    ButtonGadget(04,0260,32,100,20,"Dolby Sound Aus")
   
    ;Relais 3
    ButtonGadget(05,0380,06,100,20,"Drucker Ein")
    ButtonGadget(06,0380,32,100,20,"Drucker Aus")
   
    ;Relais 4
    ButtonGadget(07,0500,06,100,20,"HD - T - Ein")
    ButtonGadget(08,0500,32,100,20,"HD - T - Aus")
   
    ;Relais 5
    ButtonGadget(09,0620,06,100,20,"HD - U -  Ein")
    ButtonGadget(10,0620,32,100,20,"HD - U -  Aus")
   
    ;Relais 6
    ButtonGadget(11,0740,06,100,20,"HD - V -  Ein")
    ButtonGadget(12,0740,32,100,20,"HD - V -  Aus")
   
    ;Relais 7
    ButtonGadget(13,0860,06,100,20,"HD - W -  Ein")
    ButtonGadget(14,0860,32,100,20,"HD - W -  Aus")
   
    ;Relais 8
    ButtonGadget(15,0980,06,100,20,"HD - X -  Ein")
    ButtonGadget(16,0980,32,100,20,"HD - X -  Aus")
   
    ;Relais ALLE
    ButtonGadget(17,1100,06,160,20,"A L L E  -  E I N")
    ButtonGadget(18,1100,32,160,20,"A L L E  -  A U S")
   
    ;Buttom Go
    ButtonGadget(19,0010,32,100,20,"G O")
    
;#########################################################
;Abfrage aller BUTTON´s - ob sie gedrückt wurden
;#########################################################
   
    Repeat
     
      WWE=WaitWindowEvent()
     
      Select WWE       
       
        Case #PB_Event_Gadget
         
          Select EventGadget()
          
            Case 01
              RunProgram ("SETRelay", "/device:InterfaceA /on:1", "", 2) : Delay(500) : RE1 = 1
              
            Case 02
              RunProgram ("SETRelay", "/device:InterfaceA /off:1", "", 2) : Delay(500) : RE1 = 0
              
            Case 03
              RunProgram ("SETRelay", "/device:InterfaceA /on:2", "", 2) : Delay(500)
              
            Case 04
              RunProgram ("SETRelay", "/device:InterfaceA /off:2", "", 2) : Delay(500)
              
            Case 05
              RunProgram ("SETRelay", "/device:InterfaceA /on:3", "", 2) : Delay(500)
              
            Case 06
              RunProgram ("SETRelay", "/device:InterfaceA /off:3", "", 2) : Delay(500)
              
            Case 07
              RunProgram ("SETRelay", "/device:InterfaceA /on:4", "", 2) : Delay(500)
              
            Case 08
              RunProgram ("SETRelay", "/device:InterfaceA /off:4", "", 2) : Delay(500)
              
            Case 09
              RunProgram ("SETRelay", "/device:InterfaceA /on:5", "", 2) : Delay(500)
              
            Case 10
              RunProgram ("SETRelay", "/device:InterfaceA /off:5", "", 2) : Delay(500)
              
            Case 11
              RunProgram ("SETRelay", "/device:InterfaceA /on:6", "", 2) : Delay(500)
              
            Case 12
              RunProgram ("SETRelay", "/device:InterfaceA /off:6", "", 2) : Delay(500)
              
            Case 13
              RunProgram ("SETRelay", "/device:InterfaceA /on:7", "", 2) : Delay(500)
              
            Case 14
              RunProgram ("SETRelay", "/device:InterfaceA /off:7", "", 2) : Delay(500)
              
            Case 15
              RunProgram ("SETRelay", "/device:InterfaceA /on:8", "", 2) : Delay(500) : RE8 = 1
              
            Case 16
              RunProgram ("SETRelay", "/device:InterfaceA /off:8", "", 2) : Delay(500) : RE8 = 0
              
            Case 17
              RunProgram ("SETRelay", "/device:InterfaceA /on:1", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:2", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:3", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:4", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:5", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:6", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:7", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /on:8", "", 2) : Delay(1000)
              
            Case 18
              RunProgram ("SETRelay", "/device:InterfaceA /off:1", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:2", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:3", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:4", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:5", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:6", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:7", "", 2) : Delay(1000)
              RunProgram ("SETRelay", "/device:InterfaceA /off:8", "", 2) : Delay(1000)
              
;###########################################################################################
;Eingabe überprüfen und entsprechend verzweigen - If Eingabe = 1 : RunProgram "yxz.avi"
;###########################################################################################
              
            Case 19
              Eingabe = Val(GetGadgetText(00))
              Debug Eingabe
              ;SetGadgetText(00, "")
              
;###########################################################################################
;Starte Festplatten und dann denn Movie
;###########################################################################################
              
If Eingabe = 1 And RE8 = 0 ; Ab hier ist der Hase im Pfeffer
  Gosub Start
    RunProgram ("X:\0001 ° yxz.avi") ; Starte Avi-Datei
    
ElseIf Eingabe = 1 And RE8 = 1 ; Starte Datei direkt denn HD ist an ( RE8 = 1 )
    RunProgram ("X:\0001 ° yxz.avi")
 
            EndIf
            
            SetGadgetText(00, "")
             
          EndSelect
         
      EndSelect
      
      
     
    Until WWE = #PB_Event_CloseWindow
   
  EndIf
 
EndIf

Start:
  RunProgram ("SETRelay", "/device:InterfaceA /on:8", "", 2) ; Starte Relais 8 und somit die HD ein
    Delay (10000) ; warte 10 Sekunden, damit die HD initialisiert ist
      Return

Verfasst: 21.04.2008 20:08
von Andreas_S
suchst du den Bild - button?

Verfasst: 21.04.2008 20:10
von ts-soft
Andreas_S hat geschrieben:suchst du den Bild - button?
Deiner geht ja garnicht :(

Verfasst: 21.04.2008 20:12
von Ironsmurf
Sorry - bin immer noch blutiger Anfänger und dies ist mein erstes Windows Programm. Was ist ein Edit-Button ?

Verfasst: 21.04.2008 20:14
von Andreas_S
ts-soft hat geschrieben:
Andreas_S hat geschrieben:suchst du den Bild - button?
Deiner geht ja garnicht :(
:lol:

Der befindet sich rechts oben bei jedem post von dir (außer Mülleinmer)... drück mal drauf, dann kannst du eine posts 'edit'-tieren.

Re: Schleifenproblem If - Else - EndIf/Ist Select Case besse

Verfasst: 21.04.2008 20:19
von scholly
Ironsmurf hat geschrieben:Das Programm startet alles richtig, lässt sich aber nur schwer oder garnicht beenden.
Du beendest das Programm nich richtig, sodaß die Gosub-Routine immer noch zusätzlich durchläuft.

Setz mal ein end vor die Zeile start:.

Verfasst: 21.04.2008 20:19
von Ironsmurf
Danke für den Tip