Zu viele Case?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Zu viele Case?

Beitrag 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
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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"
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag 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
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Zu viele Case?

Beitrag 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?
a²+b²=mc²
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Mok
Du hast ein Endif vergessen!
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag 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
Bild Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag 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"?)
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@Mok: Ich habe nicht behauptet, dass Du arrogant bist.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten