Array variable subscript badly formatted.

  • Also,
    ich komme einfach nicht auf das Problem:

    [autoit]

    MsgBox (0,"",$4GewPicsDatei[0][0])
    For $i = 0 To 4
    For $x = 0 To 4
    Select
    Case $4GewPicsDatei[$i][$x] = $4GewRedYellow And $4GewPicsDatei[$i+1][$x+1] = $4GewRedYellow And $4GewPicsDatei[$i+2][$x+2] = $4GewRedYellow And _
    $4GewPicsDatei[$i+3[$x+3] = $4GewRedYellow
    EndSelect
    Next
    Next

    [/autoit]

    Zur Info: $4GewPicsDatei[][] ist 8x8 groß und es werden nur Buchstaben drin gespeichert. Der Aufruf der MsgBox vor der for-Schleife funktioniert, innerhalb der for-schleife, auch für den Fall [0][0], funktioniert es nicht mehr.
    Das Eigenartige: mit exakt der selben Struktur habe ich kurz davor bereits eine Abfrage des Arrays gemacht und die funktioniert. Hier aber nicht? Wieso? Ideen? Ich verzweifle ;(


    Fehlermeldung: ==> Array variable subscript badly formatted.:
    If $4GewPicsDatei[$i][$x] = $4GewRedYellow And $4GewPicsDatei[$i+1][$x+1] = $4GewRedYellow And $4GewPicsDatei[$i+2][$x+2] = $4GewRedYellow And $4GewPicsDatei[$i+3[$x+3] = $4GewRedYellow Then
    If $4GewPicsDatei[$i][$x] = $4GewRedYellow And $4GewPicsDatei[$i+1][$x+1] = $4GewRedYellow And $4GewPicsDatei[$i+2][$x+2] = $4GewRedYellow And $4GewPicsDatei[$i+^ ERROR

    Lächel, du kannst sie nicht alle töten.

    2 Mal editiert, zuletzt von masterRobb (18. Juni 2013 um 19:00)

  • Hallo,


    wie hast du dein Array Dimensioniert???

    [autoit]


    Local $aTmp[8][2]

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

    ; füllen

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

    For $i = 0 To 7
    $aTmp[$i][0] = Chr($i + 49)
    $aTmp[$i][1] = Chr($i + 65)
    Next

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

    _ArrayDisplay($aTmp)

    [/autoit]

    oder

    [autoit]


    ReDim $aTmp[2][8]

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

    ; füllen

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

    For $i = 0 To 7
    $aTmp[0][$i] = Chr($i + 49)
    $aTmp[1][$i] = Chr($i + 65)
    Next

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

    _ArrayDisplay($aTmp)

    [/autoit]

    frag die Array-Variable mit _ArrayDisplay ab, somit weist du wie sie Dimensioniert wurde, so kannst du die For Next schleifen darauf abstimmen.

    Lg Kleiner

  • wie hast du dein Array Dimensioniert???

    Da er behauptet 8x8 wohl eher so:

    [autoit]

    Local $aTmp[8][8]

    [/autoit]

    Wie dem auch sei, schau einfach wie Kleiner schon sagte mit arraydisplay nach wie das Array ausschaut bevor du die For Schleife abarbeitest. Vermutlich stimmen deine array Dimensionen nicht oder nicht mehr, weil du dir das array in einem nicht geposteten Code Teil überschreibst oder neu dimensionierst.

    [autoit]


    if not isArray($4GewPicsDatei) then
    msgbox(0,"Fehler","$4GewPicsDatei ist kein Array!")
    else
    ;MsgBox (0,"",$4GewPicsDatei[0][0])
    _arraydisplay($4GewPicsDatei)
    For $i = 0 To 4
    For $x = 0 To 4
    Select
    Case $4GewPicsDatei[$i][$x] = $4GewRedYellow And $4GewPicsDatei[$i+1][$x+1] = $4GewRedYellow And $4GewPicsDatei[$i+2][$x+2] = $4GewRedYellow And _
    $4GewPicsDatei[$i+3[$x+3] = $4GewRedYellow
    ;???????????????????????????????????? wo ist der code der in diesem case Zweig ausgeführt wird ??????????????????
    EndSelect
    Next
    Next
    endif

    [/autoit]
  • Hallo masterRobb,
    ich glaube, dein Fehler liegt hier:

    Zeile 6 fehlt die (hier rot markierte) Klammer: $4GewPicsDatei[$i+3][$x+3] = $4GewRedYellow

    Demzufolge ist der Index des Arrays falsch. (Das erkennst du ja an der Fehlermeldung.)

    MfG Xenon :)

    Einmal editiert, zuletzt von Xenon (18. Juni 2013 um 17:45)

  • danke :D
    Sehr komisch, eig. hat es gestern schon woanders einen Fehler gegeben und die eckige Klammer habe ich eig. hinzugefügt, wurde dann aber irgendwie zurückgesetzt :O
    Wie dämlich, na ja, danke! :thumbup:

    Lächel, du kannst sie nicht alle töten.