Expecting expression bei Endif - WTF?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Lion

Betreff: Expecting expression bei Endif - WTF?

BeitragDo, Jan 17, 2008 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo leute, ich habn Problem, bei dem mir ein paar andere nicht helfen konnten und bei dem ich mich nur Frage, wie zum Teufel sowas gehen sollte, das plagt mich jetz schon seit ein paar wochen...

Code: [AUSKLAPPEN]
         If trade=1 Then
            If tradeoutstone <= player_stone Then
               If tradeoutwater <= player_water Then
                  If tradeoutwood <= player_wood Then
                     If tradeoutfood <= player_food Then
                        If tradeoutmetal <= player_metal Then
                           If tradeoutsynthetic <= player_synthetic Then
                              If player_gold >= (tradeinstone*stone) Then
                                 If player_gold >= (tradeinwater*water) Then
                                    If player_gold >= (tradeinfood*food) Then
                                       If player_gold >= (tradeinwood*wood) Then
                                          If player_gold >= (tradeinmetal*metal) Then
                                             If player_gold >= (tradeinsynthetic*synthetic) Then
                                                Text button\x,button\y,button\inside$,1,0
                                                If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                                   Color 255,0,0
                                                   Text button\x,button\y,button\inside$,1,0
                                                   Color 255,255,255
                                                   If mouse1=1 Then
                                                      FlushMouse()
                                                      MessageNew("Handel abgeschlossen")
                                                   EndIf
                                                EndIf
                                             EndIf
                                          EndIf ; [b]<-------- HIER KOMMT DER FEHLER!![/b]
                                       ElseIf
                                          Color 111,111,111
                                          Text button\x,button\y,button\inside$,1,0
                                          Color 255,255,255
                                          If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                             Color 144,144,144
                                             Text button\x,button\y,button\inside$,1,0
                                             Color 255,255,255
                                             If mouse1=1 Then
                                                MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                                             EndIf
                                          EndIf
                                       EndIf
                                    ElseIf
                                       Color 111,111,111
                                       Text button\x,button\y,button\inside$,1,0
                                       Color 255,255,255
                                       If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                          Color 144,144,144
                                          Text button\x,button\y,button\inside$,1,0
                                          Color 255,255,255
                                          If mouse1=1 Then
                                             MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                                          EndIf
                                       EndIf
                                    EndIf
                                 ElseIf
                                    Color 111,111,111
                                    Text button\x,button\y,button\inside$,1,0
                                    Color 255,255,255
                                    If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                       Color 144,144,144
                                       Text button\x,button\y,button\inside$,1,0
                                       Color 255,255,255
                                       If mouse1=1 Then
                                          MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                                       EndIf
                                    EndIf
                                 EndIf
                              ElseIf
                                 Color 111,111,111
                                 Text button\x,button\y,button\inside$,1,0
                                 Color 255,255,255
                                 If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                    Color 144,144,144
                                    Text button\x,button\y,button\inside$,1,0
                                    Color 255,255,255
                                    If mouse1=1 Then
                                       MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                                    EndIf
                                 EndIf
                              EndIf
                           ElseIf
                              Color 111,111,111
                              Text button\x,button\y,button\inside$,1,0
                              Color 255,255,255
                              If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                 Color 144,144,144
                                 Text button\x,button\y,button\inside$,1,0
                                 Color 255,255,255
                                 If mouse1=1 Then
                                    MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                                 EndIf
                              EndIf
                           EndIf
                        ElseIf
                           Color 111,111,111
                           Text button\x,button\y,button\inside$,1,0
                           Color 255,255,255
                           If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                              Color 144,144,144
                              Text button\x,button\y,button\inside$,1,0
                              Color 255,255,255
                              If mouse1=1 Then
                                 MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                              EndIf
                           EndIf
                        EndIf
                     ElseIf
                        Color 111,111,111
                        Text button\x,button\y,button\inside$,1,0
                        Color 255,255,255
                        If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                           Color 144,144,144
                           Text button\x,button\y,button\inside$,1,0
                           Color 255,255,255
                           If mouse1=1 Then
                              MessageNew("Du hast nicht genügend Kunststoff um diesen Handel durchzuführen")
                           EndIf
                        EndIf
                     EndIf
                  ElseIf
                     Color 111,111,111
                     Text button\x,button\y,button\inside$,1,0
                     Color 255,255,255
                     If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                        Color 144,144,144
                        Text button\x,button\y,button\inside$,1,0
                        Color 255,255,255
                        If mouse1=1 Then
                           MessageNew("Du hast nicht genügend Metall um diesen Handel durchzuführen")
                        EndIf
                     EndIf
                  EndIf
               ElseIf
                  Color 111,111,111
                  Text button\x,button\y,button\inside$,1,0
                  Color 255,255,255
                  If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                     Color 144,144,144
                     Text button\x,button\y,button\inside$,1,0
                     Color 255,255,255
                     If mouse1=1 Then
                        MessageNew("Du hast nicht genügend Nahrung um diesen Handel durchzuführen")
                     EndIf
                  EndIf
               EndIf
            ElseIf
               Color 111,111,111
               Text button\x,button\y,button\inside$,1,0
               Color 255,255,255
               If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                  Color 144,144,144
                  Text button\x,button\y,button\inside$,1,0
                  Color 255,255,255
                  If mouse1=1 Then
                     MessageNew("Du hast nicht genügend Holz um diesen Handel durchzuführen")
                  EndIf
               EndIf
            EndIf
         ElseIf
            Color 111,111,111
            Text button\x,button\y,button\inside$,1,0
            Color 255,255,255
            If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
               Color 144,144,144
               Text button\x,button\y,button\inside$,1,0
               Color 255,255,255
               If mouse1=1 Then
                  MessageNew("Du hast nicht genügend Wasser um diesen Handel durchzuführen")
               EndIf
            EndIf
         EndIf
      ElseIf
         Color 111,111,111
         Text button\x,button\y,button\inside$,1,0
         Color 255,255,255
         If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
            Color 144,144,144
            Text button\x,button\y,button\inside$,1,0
            Color 255,255,255
            If mouse1=1 Then
               MessageNew("Du hast nicht genügend Steine um diesen Handel durchzuführen")
            EndIf
         EndIf
      EndIf
   EndIf


Wenn ich das Endif da weg nehme, sucht er sich das nächstbeste, das geht immer so weiter... Naja, ne if begrenzung gibt es ja auch nicht, oder?

Dankeschön für eure Hilfe, ich hab echt kA woran es liegen kann...
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x

Xeres

Moderator

BeitragDo, Jan 17, 2008 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Nachdem ich das ganze mal von IDEal automatisch eingerückt habe, sieht der letzte Block so aus:
Code: [AUSKLAPPEN]
ElseIf
   Color 111,111,111
   Text button\x,button\y,button\inside$,1,0
   Color 255,255,255
   If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
      Color 144,144,144
      Text button\x,button\y,button\inside$,1,0
      Color 255,255,255
      If mouse1=1 Then
         MessageNew("Du hast nicht genügend Steine um diesen Handel durchzuführen")
      EndIf
   EndIf
EndIf
EndIf
D.H. davor beendest du die Abfrage "If trade=1 Then" mit EndIF, aber benutzt aber danach Elseif (oberste Codezeile). Zum Schluss hast du außerdem ein überzähliges EndIF - vermutlich hast du also die allererste Abfrage zu früh abgeschlossen, was irgendwo in dem komplizierten System einen Fehler ergibt...
Hier nochmal der Ganze Psalm entsprechend eingerückt und Kommentiert; was da wie behoben werden muss kann ich beim besten Willen nicht sehen Wink
Code: [AUSKLAPPEN]
If trade=1 Then
   If tradeoutstone <= player_stone Then
      If tradeoutwater <= player_water Then
         If tradeoutwood <= player_wood Then
            If tradeoutfood <= player_food Then
               If tradeoutmetal <= player_metal Then
                  If tradeoutsynthetic <= player_synthetic Then
                     If player_gold >= (tradeinstone*stone) Then
                        If player_gold >= (tradeinwater*water) Then
                           If player_gold >= (tradeinfood*food) Then
                              If player_gold >= (tradeinwood*wood) Then
                                 If player_gold >= (tradeinmetal*metal) Then
                                    If player_gold >= (tradeinsynthetic*synthetic) Then
                                       Text button\x,button\y,button\inside$,1,0
                                       If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                          Color 255,0,0
                                          Text button\x,button\y,button\inside$,1,0
                                          Color 255,255,255
                                          If mouse1=1 Then
                                             FlushMouse()
                                             MessageNew("Handel abgeschlossen")
                                          EndIf
                                       EndIf
                                    EndIf
                                 EndIf ; [b]<-------- HIER KOMMT DER FEHLER!![/b]
                              ElseIf
                                 Color 111,111,111
                                 Text button\x,button\y,button\inside$,1,0
                                 Color 255,255,255
                                 If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                    Color 144,144,144
                                    Text button\x,button\y,button\inside$,1,0
                                    Color 255,255,255
                                    If mouse1=1 Then
                                       MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                                    EndIf
                                 EndIf
                              EndIf
                           ElseIf
                              Color 111,111,111
                              Text button\x,button\y,button\inside$,1,0
                              Color 255,255,255
                              If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                                 Color 144,144,144
                                 Text button\x,button\y,button\inside$,1,0
                                 Color 255,255,255
                                 If mouse1=1 Then
                                    MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                                 EndIf
                              EndIf
                           EndIf
                        ElseIf
                           Color 111,111,111
                           Text button\x,button\y,button\inside$,1,0
                           Color 255,255,255
                           If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                              Color 144,144,144
                              Text button\x,button\y,button\inside$,1,0
                              Color 255,255,255
                              If mouse1=1 Then
                                 MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                              EndIf
                           EndIf
                        EndIf
                     ElseIf
                        Color 111,111,111
                        Text button\x,button\y,button\inside$,1,0
                        Color 255,255,255
                        If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                           Color 144,144,144
                           Text button\x,button\y,button\inside$,1,0
                           Color 255,255,255
                           If mouse1=1 Then
                              MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                           EndIf
                        EndIf
                     EndIf
                  ElseIf
                     Color 111,111,111
                     Text button\x,button\y,button\inside$,1,0
                     Color 255,255,255
                     If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                        Color 144,144,144
                        Text button\x,button\y,button\inside$,1,0
                        Color 255,255,255
                        If mouse1=1 Then
                           MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                        EndIf
                     EndIf
                  EndIf
               ElseIf
                  Color 111,111,111
                  Text button\x,button\y,button\inside$,1,0
                  Color 255,255,255
                  If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                     Color 144,144,144
                     Text button\x,button\y,button\inside$,1,0
                     Color 255,255,255
                     If mouse1=1 Then
                        MessageNew("Du hast nicht genügend Gold um diesen Handel durchzuführen")
                     EndIf
                  EndIf
               EndIf
            ElseIf
               Color 111,111,111
               Text button\x,button\y,button\inside$,1,0
               Color 255,255,255
               If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
                  Color 144,144,144
                  Text button\x,button\y,button\inside$,1,0
                  Color 255,255,255
                  If mouse1=1 Then
                     MessageNew("Du hast nicht genügend Kunststoff um diesen Handel durchzuführen")
                  EndIf
               EndIf
            EndIf
         ElseIf
            Color 111,111,111
            Text button\x,button\y,button\inside$,1,0
            Color 255,255,255
            If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
               Color 144,144,144
               Text button\x,button\y,button\inside$,1,0
               Color 255,255,255
               If mouse1=1 Then
                  MessageNew("Du hast nicht genügend Metall um diesen Handel durchzuführen")
               EndIf
            EndIf
         EndIf
      ElseIf
         Color 111,111,111
         Text button\x,button\y,button\inside$,1,0
         Color 255,255,255
         If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
            Color 144,144,144
            Text button\x,button\y,button\inside$,1,0
            Color 255,255,255
            If mouse1=1 Then
               MessageNew("Du hast nicht genügend Nahrung um diesen Handel durchzuführen")
            EndIf
         EndIf
      EndIf
   ElseIf
      Color 111,111,111
      Text button\x,button\y,button\inside$,1,0
      Color 255,255,255
      If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
         Color 144,144,144
         Text button\x,button\y,button\inside$,1,0
         Color 255,255,255
         If mouse1=1 Then
            MessageNew("Du hast nicht genügend Holz um diesen Handel durchzuführen")
         EndIf
      EndIf
   EndIf
ElseIf ;!<<<<<<<<<<<<<<<<<<  Letztes Elseif zu If trade=1 Then
   Color 111,111,111
   Text button\x,button\y,button\inside$,1,0
   Color 255,255,255
   If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
      Color 144,144,144
      Text button\x,button\y,button\inside$,1,0
      Color 255,255,255
      If mouse1=1 Then
         MessageNew("Du hast nicht genügend Wasser um diesen Handel durchzuführen")
      EndIf
   EndIf
EndIf ;!<<<<<<<<<<<<<<<<<<  Schließt If trade=1 Then ab

ElseIf ;!<<<<<<<<<<<<<<<<<<  ElseIF kommt unerwartet
   Color 111,111,111
   Text button\x,button\y,button\inside$,1,0
   Color 255,255,255
   If RectsOverlap(mx,my,1,1,button\x-(Len(button\inside$)*3),button\y,button\length+(Len(button\inside$)*2),button\height) Then
      Color 144,144,144
      Text button\x,button\y,button\inside$,1,0
      Color 255,255,255
      If mouse1=1 Then
         MessageNew("Du hast nicht genügend Steine um diesen Handel durchzuführen")
      EndIf
   EndIf
EndIf
EndIf ;!<<<<<<<<<<<<<<<<<<  Das wäre zuviel, wenn If trade=1 Then oben abgeschlossen sein soll
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Marek

BeitragDo, Jan 17, 2008 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
ElseIf braucht eine andere Bedingung wie die nach dem If. Wenn du etwas haben willst, dass komplett anders ist, wie das nach dem If brauchst du Else...

Code: [AUSKLAPPEN]
If var=1 Then
   Print "Variable var hat den Wert 1."
ElseIf var=2 Then
   Print "Variable var hat nicht den Wert 1, sondern den Wert 2."
Else
   Print "Variable var hat weder den Wert 1, noch den Wert 2."
EndIf
Wer lesen kann ist klar im Vorteil...
 

Lion

BeitragDo, Jan 17, 2008 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ehm ja sorry, is bei mir auch eigentlich autom. von IDEal eingerückt, aber davor kommen noch ein paar ifs (und entsprechen dahinter auch endifs, falls eins zu viel ist, ist das eigtl nicht der fehler, dann hab ich 1 zu viel kopiert Embarassed ), aber an diesen liegt es garantiert nicht
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x
 

Lion

BeitragDo, Jan 17, 2008 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Omg, das is mir aber peinlich xD

Danke!

Edit: Shit sorry wegn doppelpost, wenns allzusehr stört bitte ich nen Mod um zusammenfassung und löschung Razz
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group