Mehrdimensionale Arrays

  • Tachchen und erstmal ein Hallo an die Community.

    Direkt mein erster Thread, mit einem kleinen Problem. Ich bin gerade dabei AutoIT zu lernen und hätte eine Frage zu den mehrdimensionalen Arrays. Wie man diesen Werte zuweist, um genauer zu sein. Bei 1D Arrays ist da ja noch einfach. Aber was ich nicht verstehe, sind diese doppelten eckigen Klammern. Könnte mir das vielleicht jemand erklären, ob ihr es glaubt oder nicht, ich habe schon danach gegooglet, aber leider habe ich die Erklärungen dort nicht wirklich verstanden. Wahrscheinlich ist das ganze richtig einfach, aber ich habe einfach ein Brett vor'm Kopf. :D Also nehmen wir an, wir haben die Arrays:
    Dim $array1[5][5]
    Dim $array2[5][5][5]

    Wie weise ich denen jetzt Werte zu (wie hat man die eckigen Klammern zu verstehen)? :)

    Bedanke mich schon mal im Voraus für die Hilfe!

    Grüße

    Einmal editiert, zuletzt von Chris21 (24. Februar 2015 um 00:39)

  • Um ein Array zu verstehen, muß man sich das vorstellen.

    Hier mal ein Beispiel wie man es sich anhand Microsoft Excel vorstellen kann :

    ;=============================================================
    ;1D-Array
    ;=============================================================
    Dim $1D_ARRAY[10] ;-> 10 Zeilen / 1 Spalte / 1 Tabelle
    $1D_ARRAY[5]="Zeile 5" ;-> Jetzt steht in der Zeile 5 der Text: Zeile 5


    ;=============================================================
    ;2D-Array
    ;=============================================================
    Dim $2D_ARRAY[10][10] ;-> 10 Zeilen / 10 Spalten / 1 Tabelle
    $2D_ARRAY[5][5]="Zeile 5 - Spalte 5" ;-> Jetzt steht in der Zeile 5 / Spalte 5 der Text: Zeile 5 - Spalte 5


    ;=============================================================
    ;3D-Array
    ;=============================================================
    Dim $3D_ARRAY[10][10][10] ;-> 10 Zeilen / 10 Spalten / 10 Tabellen
    $3D_ARRAY[5][5][5]="Zeile 5 - Spalte 5 - Tabelle 5" ;-> Jetzt steht in der Zeile 5 / Spalte 5 / Tabelle 5 der Text: Zeile 5 - Spalte 5 - Tabelle 5


    Allerdings fängt ein Array nicht mit 1 an sondern mit 0!

    Ich hoffe, ich konnte dir das was näher bringen?!

    Gruß
    Homer J. S.

    ...wenn die Donuts auch nur halb so gut schmecken wie sie aussehen, dann sehen sie doppelt so gut aus wie sie schmecken...

    Einmal editiert, zuletzt von Homer J. S. (24. Februar 2015 um 13:05)

  • Homer
    J. S. schrieb:
    Dim $1D_ARRAY[10] ;-> 10 Zeilen / 0 Spalten / 0 Tabellen

    Wieso 0 Spalten?
    Eine Spalte hat es implizit auf jedenfall, auch wenn man diese nicht explizit angibt.

    So, habe eben meinen Post (4) geändert bezüglich der Spalten und Tabllen Anzahl

    Homer J. S. schrieb:

    Homer J. S. schrieb:
    $1D_ARRAY[5]="Zeile 5" ;-> Jetzt steht in der Zeile 5 der Text: Zeile 5

    Müsste da nicht eher "Zeile 6" stehen?

    Natürlich hast du recht, mit der 0 gezählt, wäre es Zeile 6. Es ging ja um das Verständniss eines Arrays anhand Excel. Daher hatte ich ja auch geschrieben:


    Zitat

    Allerdings fängt ein Array nicht mit 1 an sondern mit 0!

    Gruß
    Homer J. S.

    ...wenn die Donuts auch nur halb so gut schmecken wie sie aussehen, dann sehen sie doppelt so gut aus wie sie schmecken...

    2 Mal editiert, zuletzt von Homer J. S. (24. Februar 2015 um 13:09)

  • Moin Chris,

    hier ein anschauliches Beispiel eines solchen Arrays:

    [autoit]

    #include <array.au3>

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

    ;~ komplettes Befüllen des Arrays
    Local $arr[3][2] = [["0-0", "0-1"], ["1-0", "1-1"], ["2-0", "2-1"]]

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

    ;~ Eine Zeile sieht dann so aus:
    ;~ local $arr[3][2] = [["0-0", "0-1"]]

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

    ;~ eine Spalte würde so aussehen:
    ;~ local $arr[3][2] = [["0-0"], ["1-0"], ["2-0"]]

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

    ;~ Array anzeigen
    _ArrayDisplay($arr)

    [/autoit]

    Es wird immer in eckigen Klammern von Zeile nach Spalte geschrieben. Schau dir die auskommentierten arrays an, nur vorher dran denken, das vorherige auszukommentieren :P Dann kannst du dir ein gutes Bild machen, wie das funktioniert :)

  • Das engl. Wiki hat auch ein sehr gutes Tutorial.