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

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

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

Beitrag 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
Es kommt immer auf die Sichtweise des Betrachters an.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Wenn Du "code"-Tags richtig setzt und den Code selber ansprechend einrückst, wächst bestimmt die Test-und Hilfsbereitschaft. :wink:
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag 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:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag 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
Es kommt immer auf die Sichtweise des Betrachters an.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

suchst du den Bild - button?
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 »

Andreas_S hat geschrieben:suchst du den Bild - button?
Deiner geht ja garnicht :(
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
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag von Ironsmurf »

Sorry - bin immer noch blutiger Anfänger und dies ist mein erstes Windows Programm. Was ist ein Edit-Button ?
Es kommt immer auf die Sichtweise des Betrachters an.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

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

Beitrag 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:.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag von Ironsmurf »

Danke für den Tip
Es kommt immer auf die Sichtweise des Betrachters an.
Antworten