Seite 1 von 1

And und Or Verknüpfung fehlerhaft? *gelöst*

Verfasst: 30.04.2008 10:16
von BlueHoschi
Hallo @ all,

habe keinen anderen Thread zu diesem Thema gefunden zumindest nicht bei den Bugs, und dafür halte ich es eigentlich.
Meine Frage dreht sich um "UND" und "ODER" Verknüpfungen in EINER If-Abfrage.
Folgender Code Funktioniert nicht so, wie er eigentlich sollte:

Code: Alles auswählen

If Var1 = 1 And Var2 = 1 Or Var3 = 1 And Var4 = 1
Debug "Super wenn´s läuft"
endif
irgendwie schneidet PureBasic die Überprüfung der Variablen nach dem "Or" ab. D.h. die ersten beiden Variablen werden auf "Und" geprüft und ergeben den Debug wenn beide da sind, aber bei den beiden nach dem "Or" ist es eigentlich egal wie die Wertigkeit gerade ist, das ergibt eh´ nix.

Eigentlich sollte es genauso Funktionieren wie folgender Code:

Code: Alles auswählen


If Var1 = 1 And Var2 = 1
Varx1 = 1
EndIf

If Var3 = 1 And Var4 = 1
Varx2 = 1
EndIf

If Varx1 =1  Or Varx2 = 1
Debug "Jetzt läuft es aber"
EndIf

Es wäre ja schön wenn man sich die zusätzlichen Variablen (Varx1, Varx2)sparen könnte.
Jemand eine Idee oder hat sich das mit einer späteren Version von PureBasic erledigt? Oder bin ich einfach nur ... nich´ klug genug?

Habe PB 4.0

Verfasst: 30.04.2008 10:37
von STARGÅTE
ämm wie wäre es mit Klammern ? damit PB weiß welche Ausdrücke vorrang haben:

Code: Alles auswählen

If (Var1 = 1 And Var2 = 1) Or (Var3 = 1 And Var4 = 1) 
Debug "Super wenn´s läuft" 
endif 
natürlich muss du die Var 1 bis 4 erst mal auf 1 setzten :wink:

Verfasst: 30.04.2008 10:39
von Riacon
ist doch richtig so:

#true or #false = #true
#true or #true = #true

ist also egal, was nach dem or kommt, wenn der ausdruck vorher bereits wahr ist.

edit:

Code: Alles auswählen

If Var1 = 1 And Var2 = 1 
Varx1 = 1 
EndIf 

If Var3 = 1 And Var4 = 1 
Varx2 = 1 
EndIf 

If Varx1 =1  Or Varx2 = 1 
Debug "Jetzt läuft es aber" 
EndIf 
da kommt auch nichts anderes raus: wenn Varx1 = 1, dann ist auch die letzte bedingung wahr, egal welchen wert Varx2 hat

Verfasst: 30.04.2008 11:37
von BlueHoschi
@Stargate
KLAMMERN... verdammt damit hat es sich bewahrheitet: ICH BIN NICHT KLUG GENUG :cry:
Manchmal... :freak: aber so richtig...
Dann werde ich das mal testen. ...ähem...
Also vermutlich doch kein BUG.

@Riacon
Was Du schreibst, ist zu dem wie es ja auch richtig ist. Aber immerhin hast Du versucht mir zu helfen --> Dicker Pluspunkt!! :allright:

War mal wieder richtig fix, man muß nie lange auf die Antwort warten.
Das erhöht den Lerneffekt doch massiv. :allright: :allright:

In dieser Antwort gibt es keine versteckte Ironie!!

Verfasst: 30.04.2008 11:49
von BlueHoschi
Klammern geht!!
Herzlichen Dank.

Verfasst: 30.04.2008 12:16
von STARGÅTE
Ja du musst halt bedenken das AND und OR die gleiche priorität haben. Sie werden halt von links nach rechts durchgearbeitet.