2D Array Add?

  • Hey, stehe hier vor einem Problem...

    Ich habe ein 2 Dimensionaler Array... Dort sind 30 Einträge vorhanden.
    Nun will ich an 1. Stelle des Arrays einen neuen Eintrag machen.
    Der Array muss jedoch genau die gleiche Rheienfolge beibehalten, und der Array muss vergrössert werden. Also es dürfen keine Werte verloren gehen.

    Wie mache ich dies?
    ArrayAdd kann nur an das Ende einen Wert hinzufügen, und ArrayInsert funktioniert nur mit einem 1D Array.

    Greetz

    • Offizieller Beitrag

    Das Problem ist doch mit einer For...Next-Schleife ganz schnell gelöst:

    [autoit]


    #include <Array.au3>
    Dim $array[5][2] = [[10,11],[12,13],[14,15],[16,17],[18,19]] ; Test 2D-Array
    _ArrayDisplay($array, 'vorher')

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

    ReDim $array[UBound($array) + 1][2] ; Neues Arrayelement erzeugen (am Ende)

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

    For $i = UBound($array) - 1 To 1 Step -1 ; umkopieren
    $array[$i][0] = $array[$i - 1][0]
    $array[$i][1] = $array[$i - 1][1]
    Next
    $array[0][0] = 0
    $array[0][1] = 0
    _ArrayDisplay($array, 'nachher') ; nun ist das erste Element frei

    [/autoit]

    Edit: Falls es mehr als zwei Elemente in der zweiten Dimension sind, dann halt eine zusätzliche Schleife verwenden:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Dim $array[5][3] = [[10,11,12],[12,13,14],[14,15,16],[16,17,18],[18,19,20]] ; Test 2D-Array
    _ArrayDisplay($array, 'vorher')

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

    ReDim $array[UBound($array) + 1][3] ; Neues Arrayelement erzeugen (am Ende)

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

    For $i = UBound($array) - 1 To 1 Step -1 ; umkopieren
    For $j = 0 To UBound($array, 2) - 1
    $array[$i][$j] = $array[$i - 1][$j]
    Next
    Next
    For $j = 0 To UBound($array, 2) - 1
    $array[0][$j] = 0
    Next
    _ArrayDisplay($array, 'nachher') ; nun ist das erste Element frei

    [/autoit]