If Bedingung - Fehler

  • Hallo. Ich bin seit ein 1-2 Tagen schon auf der Suche nach einem Fehler in einem Teil meines Scriptes, jedoch finde ich ihn einfach nicht.

    Hier ist der Teil:

    [autoit]

    $xoldArraynum1 = 1
    $yoldArraynum1 = 2

    [/autoit][autoit][/autoit][autoit]

    If $xoldArraynum1 <> 1 And $xoldArraynum1 = 9 And $yoldArraynum1 = 0 Or $yoldArraynum1 = 2 Or $yoldArraynum1 = 4 Or $yoldArraynum1 = 6 Or $yoldArraynum1 = 8 Then
    MsgBox(0, "2", "2te")
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    $xhelp1 = $xoldArraynum1
    $yhelp1 = $yoldArraynum1+1
    $xoldArraynum1 = $xhelp1
    $yoldArraynum1 = $yhelp1
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    Sleep(500)
    EndIf

    [/autoit]

    Das $xoldArraynum1 <> 1 hab ich als Probe reingetan um zu schauen ob es so auch nicht funktioniert.
    Eigentlich dürfte er If nicht ausführen oder. $xoldArraynum1 ist 1. <> 1 ist die erste Bedingung, aber er führt es trotzdem aus.
    Ich hoffe ihr könnt mir helfen. Was ich will, dass die Bedingung so bleibt, er aber nicht das If ausführt.
    Bis bald.

  • Meinst du so?

    Spoiler anzeigen
    [autoit]

    $xoldArraynum1 = 1
    $yoldArraynum1 = 2

    [/autoit] [autoit][/autoit] [autoit]

    If $xoldArraynum1 <> 1 And $xoldArraynum1 = 9 And ($yoldArraynum1 = 0 Or $yoldArraynum1 = 2 Or $yoldArraynum1 = 4 Or $yoldArraynum1 = 6 Or $yoldArraynum1 = 8) Then
    MsgBox(0, "2", "2te")
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    $xhelp1 = $xoldArraynum1
    $yhelp1 = $yoldArraynum1+1
    $xoldArraynum1 = $xhelp1
    $yoldArraynum1 = $yhelp1
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    Sleep(500)
    EndIf

    [/autoit]
  • oder so...?

    [autoit]


    $xoldArraynum1 = 1
    $yoldArraynum1 = 2

    [/autoit][autoit][/autoit][autoit]

    If $xoldArraynum1 <> 1 Then
    If $xoldArraynum1 = 9 And $yoldArraynum1 = 0 Or $yoldArraynum1 = 2 Or $yoldArraynum1 = 4 Or $yoldArraynum1 = 6 Or $yoldArraynum1 = 8 Then
    MsgBox(0, "2", "2te")
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    $xhelp1 = $xoldArraynum1
    $yhelp1 = $yoldArraynum1+1
    $xoldArraynum1 = $xhelp1
    $yoldArraynum1 = $yhelp1
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    Sleep(500)
    EndIf
    EndIf

    [/autoit]
    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    2 Mal editiert, zuletzt von stinger2k (20. April 2010 um 22:05)

  • Hallo Bakku,

    ich weis ja nicht was du erreichen möchtest, aber teste einmal diese Version:

    Spoiler anzeigen
    [autoit]


    testXY(1, 2)

    [/autoit] [autoit][/autoit] [autoit]

    For $x = 1 To 9
    For $y = 1 To 9
    testXY($x, $y)
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Func testXY($xoldArraynum1, $yoldArraynum1)
    ;If $xoldArraynum1 <> 1 And $xoldArraynum1 = 9 And $yoldArraynum1 = 0 Or $yoldArraynum1 = 2 Or $yoldArraynum1 = 4 Or $yoldArraynum1 = 6 Or $yoldArraynum1 = 8 Then
    If ($xoldArraynum1 = 9) And (Mod($yoldArraynum1, 2) = 0) Then
    MsgBox(0, "2", "2te")
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    $xhelp1 = $xoldArraynum1
    $yhelp1 = $yoldArraynum1 + 1
    $xoldArraynum1 = $xhelp1
    $yoldArraynum1 = $yhelp1
    MsgBox(0, "Nummern", $xoldArraynum1 & ", " & $yoldArraynum1)
    Else
    MsgBox(0, "Nummern x<>9 oder y nicht durch 2 teilbar", $xoldArraynum1 & ", " & $yoldArraynum1)
    EndIf
    EndFunc ;==>testXY

    [/autoit]

    mfg (Auto)Bert

    • Offizieller Beitrag

    Damit du deine eigene Abfrage verstehst, habe ich es mal in die Teilausdrücke zerlegt:

    [autoit]

    If ( $xoldArraynum1 <> 1 And $xoldArraynum1 = 9 And $yoldArraynum1 = 0 ) _ ; Teilausdruck nur wahr wenn ..<>1 UND ..=9 UND ..=0
    ; trifft eine der folgenden Bedingungen zu ist der GESAMTAUSDRUCK WAHR! (durch Or)
    Or $yoldArraynum1 = 2 _
    Or $yoldArraynum1 = 4 _
    Or $yoldArraynum1 = 6 _
    Or $yoldArraynum1 = 8 Then

    [/autoit]