Seite 1 von 1

Zu viele Case?

Verfasst: 03.11.2008 21:22
von Mok
Hi!
Kann es in einem Select/Case-Block möglich sein, dass es zuviele Cases gibt? Mein Compiler meldet "Case without Select" obwohl nur wenige Zeilen darüber das Select zu sehen ist.
Kann man das irgendwie übergehen, möglichst nicht mit If?

MfG, Mok

__________________________________________________
Thread verschoben
Allgemein>Anfänger
03.11.2008
RSBasic

Verfasst: 03.11.2008 21:24
von RSBasic
@Mok
Code?

>dass es zuviele Cases gibt...
Nein.
Es sei denn, du hast nen Case 1000000000000000000000 :lol:
Dann gibt es nen "Numerical overflow: too big number"

Verfasst: 03.11.2008 21:28
von Mok
Bitte nicht gleich nerven wegen Übersichtlichkeit.
Wurde vom VD übernommen:

Code: Alles auswählen

Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadgetID()
    Case #Listview_0
      If GetGadgetState(#Listview_0)=1
        SetGadgetState(#Listview_0,0)
      ElseIf GetGadgetState(#Listview_0)=9
        SetGadgetState(#Listview_0,0)
      ElseIf GetGadgetState(#Listview_0)=13
        SetGadgetState(#Listview_0,0)
      ElseIf GetGadgetState(#Listview_0)=38
        SetGadgetState(#Listview_0,0)
      ElseIf GetGadgetState(#Listview_0)=69
        SetGadgetState(#Listview_0,0)
      ElseIf GetGadgetState(#Listview_0)=78
        SetGadgetState(#Listview_0,0)
      ElseIf GetGadgetState(#Listview_0)=81
        SetGadgetState(#Listview_0,0)
      ElseIf GetGadgetState(#Listview_0)=90
        SetGadgetState(#Listview_0,0)
      EndIf
    Case #Radio_0
      Generic$ = "LightmappedGeneric"
    Case #Radio_1
      Generic$ = "UnlitGeneric"
    Case #Radio_2
      Generic$ = "VertexLitGeneric"
    Case #CheckBox_0
      status_checkbox_0 = GetGadgetState(#CheckBox_0)
      If status_checkbox_0 = 1
        selfillum = #True
      Else
        selfillum = #False
    Case #String_2      ; hier wird gemotzt
     
    Case #CheckBox_1
     
    Case #Image_0
      Beep_(400,200)
      Beep_(600,200)
      Beep_(800,200)
      Beep_(1000,200)
      Beep_(1200,300)
     
    Case #CheckBox_3
      status_checkbox_3 = GetGadgetState(#CheckBox_3)
      If status_checkbox_3 = 1
        DisableGadget(#String_2, 0)
        bump = #True
      Else
        DisableGadget(#String_2,1)
        bump = #False
      EndIf
     
    Case #Button_0
    
    VMTBase$ = GetFilePart(ReplaceString(GetGadgetText(#String_0), "/", "\"))
    VMTBasefinal$ = ReplaceString(VMTBase$, Chr(34),"")
    Save$ = PathRequester(VMTBase$ +".vmt speichern unter...","C:\")
       If Save$ = ""
         MessageRequester("Fehler!","VMT konnte nicht gespeichert werden!",16)
       Else
         CreateFile(0,Save$+"\"+VMTBasefinal$+".vmt")
         WriteStringN("// Made with VMT Maker 1.00 Beta")
         WriteStringN(Generic$)
         WriteStringN("{")
         WriteStringN(Chr(34)+"$basetexture"+Chr(34)+" "+GetGadgetText(#String_0))
         If selfillum = #True
         WriteStringN(Chr(34)+"$selfillum"+Chr(34)+" "+Chr(34)+"1"+Chr(34))
         EndIf
         
       EndIf
     
    Case #Button_1
      End
   
  EndSelect
EndIf
If EventID=#PB_Event_CloseWindow
  Quit=1
EndIf
Until Quit=1

Re: Zu viele Case?

Verfasst: 03.11.2008 21:31
von Kiffi
Mok hat geschrieben:Kann es in einem Select/Case-Block möglich sein, dass es zuviele Cases gibt?
Nein. In diesem Fall sitzt der Bug vor der Tastatur.

Grüße ... Kiffi

P.S.: Du scheinst ziemlich viel Vertrauen in Deine Unfehlbarkeit als
Programmierer und sehr wenig Vertrauen in die 'Reife' des PB-Compilers zu
haben. Das habe ich schon bei Deiner letzten Frage bzgl. der Anzahl von
Items in einem Listicongadget herauslesen können. Mein Tipp: Glaub einfach
mal dem Compiler und untersuche Deinen Code selbstkritisch ;-)

P.S.2: If status_checkbox_0 = 1 <-- wo ist denn da das EndIf?

Verfasst: 03.11.2008 21:32
von RSBasic
@Mok
Du hast ein Endif vergessen!

Verfasst: 03.11.2008 21:32
von sibru

Code: Alles auswählen


Repeat
  EventID=WaitWindowEvent()
  If EventID=#PB_Event_Gadget
    Select EventGadgetID()
      Case #Listview_0
        If GetGadgetState(#Listview_0)=1
          SetGadgetState(#Listview_0,0)
        ElseIf GetGadgetState(#Listview_0)=9
          SetGadgetState(#Listview_0,0)
        ElseIf GetGadgetState(#Listview_0)=13
          SetGadgetState(#Listview_0,0)
        ElseIf GetGadgetState(#Listview_0)=38
          SetGadgetState(#Listview_0,0)
        ElseIf GetGadgetState(#Listview_0)=69
          SetGadgetState(#Listview_0,0)
        ElseIf GetGadgetState(#Listview_0)=78
          SetGadgetState(#Listview_0,0)
        ElseIf GetGadgetState(#Listview_0)=81
          SetGadgetState(#Listview_0,0)
        ElseIf GetGadgetState(#Listview_0)=90
          SetGadgetState(#Listview_0,0)
        EndIf
      Case #Radio_0
        Generic$ = "LightmappedGeneric"
      Case #Radio_1
        Generic$ = "UnlitGeneric"
      Case #Radio_2
        Generic$ = "VertexLitGeneric"
      Case #CheckBox_0
        status_checkbox_0 = GetGadgetState(#CheckBox_0)
        If status_checkbox_0 = 1
          selfillum = #True
        Else
          selfillum = #False
          
          
          
      EndIf ;<-- das hier fehlte !!!
          
          
        Case #String_2      ; hier wird gemotzt
          
        Case #CheckBox_1
          
        Case #Image_0
          Beep_(400,200)
          Beep_(600,200)
          Beep_(800,200)
          Beep_(1000,200)
          Beep_(1200,300)
          
        Case #CheckBox_3
          status_checkbox_3 = GetGadgetState(#CheckBox_3)
          If status_checkbox_3 = 1
            DisableGadget(#String_2, 0)
            bump = #True
          Else
            DisableGadget(#String_2,1)
            bump = #False
          EndIf
          
        Case #Button_0
          
          VMTBase$ = GetFilePart(ReplaceString(GetGadgetText(#String_0), "/", "\"))
          VMTBasefinal$ = ReplaceString(VMTBase$, Chr(34),"")
          Save$ = PathRequester(VMTBase$ +".vmt speichern unter...","C:\")
          If Save$ = ""
            MessageRequester("Fehler!","VMT konnte nicht gespeichert werden!",16)
          Else
            CreateFile(0,Save$+"\"+VMTBasefinal$+".vmt")
            WriteStringN("// Made with VMT Maker 1.00 Beta")
            WriteStringN(Generic$)
            WriteStringN("{")
            WriteStringN(Chr(34)+"$basetexture"+Chr(34)+" "+GetGadgetText(#String_0))
            If selfillum = #True
              WriteStringN(Chr(34)+"$selfillum"+Chr(34)+" "+Chr(34)+"1"+Chr(34))
            EndIf
            
          EndIf
          
        Case #Button_1
          End
          
      EndSelect
    EndIf
    If EventID=#PB_Event_CloseWindow
      Quit=1
    EndIf
  Until Quit=1 
Gruss Siggi

Verfasst: 03.11.2008 21:38
von Mok
@Kiffi:
Kiffi hat geschrieben:Nein. In diesem Fall sitzt der Bug vor der Tastatur.
Achso^^
Kiffi hat geschrieben:Du scheinst ziemlich viel Vertrauen in Deine Unfehlbarkeit als
Programmierer
Ich weiß was arroganz ist, und versichere dir, dass ich es nicht bin! NIemand ist fehlerfrei, und das weiß ich!
Kiffi hat geschrieben:sehr wenig Vertrauen in die 'Reife' des PB-Compilers zu
haben.
Stimmt net...

@RSBasic:
Jo, danke (Warum war dann da kein "EndIf missing"?)

Verfasst: 03.11.2008 21:44
von Kiffi
@Mok: Ich habe nicht behauptet, dass Du arrogant bist.

Grüße ... Kiffi

Verfasst: 03.11.2008 21:45
von TomS
Naja. Zwei Fehler gleichzeitig.

Vor dem Case kein EndIf und vor dem Case kein Select.

In der Fehlerabfrage wird ein fehlendes Select halt vor dem fehlenden EndIf stehen.

Verfasst: 13.11.2008 17:45
von PMV
Mok hat geschrieben:Jo, danke (Warum war dann da kein "EndIf missing"?)
Das EndIf könnte ja noch später kommen, also weis er ja nicht, dass das
EndIf da fehlt. Aber da kommt ein Case ... er hat aber dafür kein
passendes Select parat, also kommt der Fehler "Case without Select".

MFG PMV