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
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