Hä? warum geht if nicht?
Übersicht

Medabots1992Betreff: Hä? warum geht if nicht? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mir ist was sehr komisches aufgetretten ?!?!
Dieser Code geht irgendwie nicht kann mir einer Helfe. BlitzBasic: [AUSKLAPPEN] If k(0) = 1 And k(3) = 1 And k(6) = 1 Or k(1) = 1 And k(4) = 1 And k(7) = 1 Or k(2) = 1 And k(5) = 1 And k(8) = 1 Or k(0) = 1 And k(1) = 1 And k(2) = 1 Or k(4) = 1 And k(5) = 1 And k(3) = 1 Or k(6) = 1 And k(7) = 1 And k(8) Or k(0) = 1 And k(4) = 1 And k(8) = 1 Or k(2) = 1 And k(4) = 1 And k(6) = 1 Then Weil ![]() ![]() Ich brauche hilfe warum das nicht geht. ok es ist so: BlitzBasic: [AUSKLAPPEN]
Ich brauch dringend hilfe warum das nicht funktioniert ![]() Weil ich denke ich hab alles richtig gemacht ist aber net funktionfähig. |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
WOW! was ist das denn für ne Abfrage??
Versuch sie doch etwas zu vereinfachen, dann geht der Fehler mit sicherheit auch von alleine Futsch ![]() Code: [AUSKLAPPEN] abfrage = 0
If k(0) And k(3) And k(6) then Abfrage=1 if k(1) And k(4) And k(7) then Abfrage=1 if k(2) And k(5) And k(8) then Abfrage=1 if k(0) And k(1) And k(2) then Abfrage=1 if k(4) And k(5) And k(3) then Abfrage=1 if k(6) And k(7) And k(8) then Abfrage=1 if k(0) And k(4) And k(8) then Abfrage=1 if k(2) And k(4) And k(6) then Abfrage=1 ;;;;;;; ---> if abfrage then ;............... ;... bla bla ... ;............... endif statt "if bla = 1" kannst du auch schreiben "if bla" weil in dem fall dann ja bla = 1 = true ist. Ich denke mal, dein Fehler war, dass du das ungefähr so hattest: Code: [AUSKLAPPEN] if ... and ... and ... and ... or ... and ... and ... and ...
aber so meintest: Code: [AUSKLAPPEN] if ( ... and ... and ... and ... ) or ( ... and ... and ... and ...)
denn der Computer versteht die Zeile so: Code: [AUSKLAPPEN] if ... and ... and ... and ( ... or ... ) and ... and ... and ...
|
||
MegaTefyt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mal davon abgesehen, dass so eine Abfrage nicht sonderlich... "glücklich" ist, kommt AND grundsätzlich vor OR (wie bei Punktrechnung vor Strichrechnung). | ||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuche immer geschickt einzuklammern.
Statt: BlitzBasic: [AUSKLAPPEN] If var1= 12 And var2=5 Or var1=58 And var2=23 Then Was wahrscheinlich nicht den gewünschten Effekt hat, musst du dir überlegen,was du willst. In meinem Beispiel: Entweder ist var1 = 12 und Var2=5 ODER var1 ist 58 und var2 23. Das sähe dann nämlich so aus: BlitzBasic: [AUSKLAPPEN] If (var1=12 And var2=5) Or (var1=58 And var2=23) Then MfG D2006 |
||
Medabots1992 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
achso das hab ich nicht gewusst.
Jetzt weis ich mehr ![]() Hab net gewusst das or "* or /" ist und and "+ or -" oder so. (Mathe) So jetzt geht es ![]() *freu* Ja und wie mach ich es mit dem? Das ist nur AND If Not k(0) = 2 And k(1) = 2 And k(2) = 2 And k(3) = 2 And k(4) = 2 And k(5) = 2 And k(6) = 2 And k(7) = 2 And k(8) = 2 And k(0) = 1 And k(1) = 1 And k(2) = 1 And k(3) = 1 And k(4) = 1 And k(5) = 1 And k(6) = 1 And k(7) = 1 And k(8) = 1 And Abfrage = 1 And Abfrage = 2 Then |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was soll der scheiß?
Wie soll k(0) gleichzeitig 1 und 2 sein. Und wie Abfrage gleichzeitig 1 und 2. Und ...? Ich komme mir bei deiner Denkleistung, die du hier an den Tag legst, sehr verarscht vor. Erst denken, dann posten. MfG D2006 |
||
Medabots1992 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ICh weis es wirklich nicht.
Weil davor ist ja ein Not also wenn??? Ok kann ja stimmen das ich da was flasch gemacht hab ooops.... |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, der original Code ist ein MONSTRUM !
AND und OR sollten nicht in einer Zeile gemischt werden. AND und OR schließen sich eigentlich gegenseitig aus. Wenn so was gibt dann so: If X = 1 And Y = 2 And Z = 3 Then If Q = 1 or Q = 5 Then "Irgendwas" Endif Außerdem, wenn es um viele verschiedenen Werte des selben Variable geht, kann man oft auch mit < und > vereinfachen: If X > 0 and X < 6 then If X <> 4 then "irgendwas" Endif (Hier werden alle X Werte zwischen 1 und 5 genommen, außer 4.) Aber, wenn man so Viele verschiedene Werte abgleichen will, dann sollte man das lieber ganz anders lösen. Zum Beispiel eine Schleife und Read Data Kombination oder was Ähnliches, es gibt da Möglichkeiten. For f = 1 to 6 Read Dat1 If k(Dat1) = 1 Then "Irgendwas" Next Data 0,3,6,1,4, "etc..." Anmerkung: Du könntest das weiter kombinieren, in dem du den aus Data gelesenen Wert nicht immer nur mit 1 vergleichst, sondern auch den Vergleichweett aus einer Data ausliest. |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
MegaTefyt hat Folgendes geschrieben: Mal davon abgesehen, dass so eine Abfrage nicht sonderlich... "glücklich" ist, kommt AND grundsätzlich vor OR (wie bei Punktrechnung vor Strichrechnung).
ich dachte AND und OR sind gleichberechtigte Operationen, wie Plus und Minus |
||
Medabots1992 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oh ich habs ![]() JA das ist ja so BlitzBasic: [AUSKLAPPEN]
|
||
MegaTefyt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Timo hat Folgendes geschrieben: MegaTefyt hat Folgendes geschrieben:
Mal davon abgesehen, dass so eine Abfrage nicht sonderlich... "glücklich" ist, kommt AND grundsätzlich vor OR (wie bei Punktrechnung vor Strichrechnung).
ich dachte AND und OR sind gleichberechtigte Operationen, wie Plus und Minus Hm, ist auch so, habe das gerade nachgeschlagen und in Blitz3D getestet. Aber korrekt ist es eigentlich nicht, da AND und OR usw. logische Operatoren sind und da kommt nunmal AND vor OR. Leider wird dies wohl nicht von allen Sprachen eingehalten. Bei SQL beispielsweise gelten diese Regeln... Also nochmal in kurz: in Blitz3D haben AND und OR die gleiche Priorität. Von Blitzbase.de: Code: [AUSKLAPPEN] () Einklammerung
INT, FLOAT, STR Typumwandlung ~ Bitw. Invertierung ^ Potenzieren *, /, MOD Multiplikation, Division, Modulo SHL, SHR, SAR Bitverschiebung +, - Addition, Subtraktion <, >, <=, >=, =, <> Vergleich AND, OR, XOR Und, Oder, XOder-Operatoren NOT Nicht-Operator (Priorität von oben nach unten fallend, auf gleicher Zeile = gleiche Priorität) Wenn ich zum Beispiel C nehme, dann kommt AND vor XOR und XOR vor OR. Und NOT kommt direkt nach der Klammerung an zweiter Stelle, während NOT in Blitz3D an letzter Stelle kommt. O.o Naja, man muss sich wohl von Sprache zu Sprache anpassen, wobei ich das echt ein als ein Unding empfinde, dass Prioritäten von logischen Operatoren überall anders gesetzt werden... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group