Namen für 2D Array generieren?!?

  • Hi!

    Vllt. steh ich im Moment bissl aufm Schlauch, aber:

    Ich habe ein Script das bei jedem Durchlauf ein 2D Array erstellt. Wie bewerkstellige ich es nun das bei jedem Durchlauf die Daten nicht überschrieben werden?

    Mit $neu = $alt schaff ich ja auch nur ein Loop!

    Am liebsten wären mir die Loops am Ende des Arraynamens, aber wie erstelle ich ein Arraynamen für nen 2D Array mit fortlaufender Zahl am Ende?

    Auch $string & $Count wollte AutoIt nicht..

    Jemand nen Tipp??

    Oder das 2D Array zu einem anderem Array hinzufügen, aber die 2D Arrays sind alle unterschiedlich groß!

  • Ohne Beispielcode (Minimalbeispiel) etwas schwierig aber wenn die Arrays tatsächlich in allen Dimensionen unterschiedlich sind kannst du auch ein Array von 2D-Arrays machen.
    Heißt also ein Array wo einfach das jeweils aktuelle 2D-Array als neues Element eingefügt wird.

  • Nein... Der Zugriff auf ein Array in einem Array muss anders erfolgen als gewöhnlich.
    Das jeweilige Element aus dem Main-Array muss erst zwischengespeichert werden.

    Vielleicht ist das ja an einem Beispiel erkenntlich:

    Spoiler anzeigen
    [autoit]


    ;Sub-Arrays
    Local $aSubArray1[5] = ["AutoIt", "C++", "C", "BASIC", "Assembler"]
    Local $aSubArray2[7] = ["95", "98", "2000", "XP", "Vista", "7", "8"]
    Local $aSubArray3[4] = ["Binär", "Oktal", "Dezimal", "Hexadezimal"]

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

    ;Main-Array
    Local $aMainArray[3]

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

    ;Main-Array befüllen
    $aMainArray[0] = $aSubArray1
    $aMainArray[1] = $aSubArray2
    $aMainArray[2] = $aSubArray3

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

    ;Nun ist in jedem Element von $aMainArray ein Subarray untergebracht! :)

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

    ;Auslesen:

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

    $aTemp = $aMainArray[0] ;Das temporäre Array $aTemp enthält nun den ersten Eintrag von $aMainArray: $aSubArray1 (Das erste Subarray!)
    ;Auf dieses Temp-Array kann nun genau so zugegriffen werden, wie direkt auf $aSubArray1 - Es ist eine exakte Kopie.

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

    ConsoleWrite("Sprache der höchsten Abstraktionsebene: " & $aTemp[4] & @CRLF)

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

    $aTemp = $aMainArray[1] ;Nun enthält unser Temp-Array eine Kopie von $aSubArray2

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

    ConsoleWrite("Bestes Windows OS: " & $aTemp[5] & @CRLF)

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

    $aTemp = $aMainArray[2] ;Selbes Spiel mit dem letzten Subarray...

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

    ConsoleWrite("Computer rechnen ...: " & $aTemp[0] & @CRLF)

    [/autoit]

    lg chess

  • Also ich hab jetzt das 2D Array in einem 1D Array gespeichert...

    ReDim $a_Votings[UBound($a_Votings) + 1]
    $a_Votings[$VotingCounts] = $aVotes

    ...aber ich seh keine Namen wenn ich

    _ArrayDisplay($a_Votings)

    aufrufe!

    Ich kann zwar die 2D Arrays Abrufen..

    _ArrayDisplay($a_Votings[1])

    aber die Array-Liste von $a_Votings ist leer!?!

  • Eigentlich würde das ja auch mit nem 3Dimensionalem Array gehen.

    [autoit]

    $var[array-id,element-id,sub-id]

    [/autoit]

    Wär halt jenachdem was man machen will nicht so leicht zu handlen.