Mehrer Arrays zu einem zweidimensionalen Array kombinieren

  • Hallo,
    ich habe unwissend wie viele Arrays mit Information in einzelnen Variablen.
    Wie kann ich alle Arrays so zusammen fügen, dass ich am Ende jede Information in nur noch einem zweidimensionalen Array habe?
    Das größte Problem dabei ist, das ich nicht weiß wie viele Variablen ich am Ende habe, und wenn ich es weiß, dann sieht es ungefähr so aus:

    [autoit]

    $var1 = ...
    $var2 = ...
    $var3 = ...
    $var4 = ...
    $var5 = ...
    $var6 = ...

    [/autoit]


    Ich möchte halt beim zweidimensionalen Array einfach es so angeben:

    [autoit]

    MsgBox (0,"",$2var[1][...])
    MsgBox (0,"",$2var[2][...])
    MsgBox (0,"",$2var[3][...])
    MsgBox (0,"",$2var[4][...])
    MsgBox (0,"",$2var[5][...])
    MsgBox (0,"",$2var[6][...])
    MsgBox (0,"",$2var[7][...])

    [/autoit]


    Ich hoffe ihr habt mich verstanden und könnt mir auch helfen.
    mfg Freaky

  • Du könntest auch die Anzahl der Items im Array zählen und ein neues Array erstellen und dieses dann befüllen

    Spoiler anzeigen
    [autoit]

    Local $Array1 [10]
    Local $Array2 [17]
    Local $Array3 [18]
    Local $Array4 [12]
    Local $Array5 [120]
    Local $Array6 [18]

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

    Local $biggest = 0

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

    If UBound($Array1) > $biggest Then $biggest = UBound($Array1)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $biggest = ' & $biggest & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If UBound($Array2) > $biggest Then $biggest = UBound($Array2)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $biggest = ' & $biggest & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If UBound($Array3) > $biggest Then $biggest = UBound($Array3)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $biggest = ' & $biggest & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If UBound($Array4) > $biggest Then $biggest = UBound($Array4)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $biggest = ' & $biggest & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If UBound($Array5) > $biggest Then $biggest = UBound($Array5)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $biggest = ' & $biggest & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If UBound($Array6) > $biggest Then $biggest = UBound($Array6)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $biggest = ' & $biggest & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    Global $gesamtarray[$biggest][6]

    [/autoit]
  • Warum speicherst du sie nicht gleich im Array?
    Mit einer Schleife und zum Beispiel Execute solltest du doch die variablen ansprechen und im Array speichern können.

    Ich habe ein eine Funktion um ein speciellen Button zu erstellen. Diese Function gibt mir ControlID, BildID, X, Y, W, H zurück und dies ist in einem Array.
    So, leider kann ich es ja nicht so machen und es zu einem zweidimensionalem Array umwandeln:

    [autoit]

    $iButton[1] = ButtonFunction (...)

    [/autoit]


    Oder ist es doch möglich?

    Problem ist ja, dass ich nicht immer weiß wie viele Variablen bzw. Arrays habe. Somit kann ich nicht sagen wie viele Abfragen ich dazu benötige.

  • wieso weißt du nicht, wieviele Arrays du hast 8|

    Zeig doch mal bitte den Quelltext, wo die arrays erstellt werden, dann ist es vielleicht einfacher zu verstehen

  • Also ich habe auch eine Funktion die buttons erstellt, so wie deine. Ich übergebe aber das Array gleich mit unzwar ein [16][5]. Als Parameter kommt auch in die Funktion rein, in welchen Index er die ControlID und Pixel und so ablegen soll.

    Ist ja kein Geheimnis, hier meine Funktion. Diese erstellt zwar keine Buttons, aber man kann sehen, was ich meine.

    Spoiler anzeigen
    [autoit]

    Func _CreateBoolOutput(ByRef $aTmp, $iIndex, $iWord, $iBit, $iLeft, $iTop, $iWidth, $iHeight = $iWidth, $bColorTrue = 0x00FF00, $bColorFalse = 0xFFFFFF)
    If $aTmp[$iIndex][0] <> "" Then SetError(1)
    If Not @error Then
    $aTmp[$iIndex][0] = "Bool"
    $aTmp[$iIndex][1] = $iWord
    $aTmp[$iIndex][2] = $iBit
    $aTmp[$iIndex][3] = GUICtrlCreateGraphic($iLeft, $iTop, $iWidth, $iHeight)
    GUICtrlSetStyle(-1, $SS_NOTIFY)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x000000, $bColorFalse)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $iWidth, $iHeight)
    $aTmp[$iIndex][4] = GUICtrlCreateGraphic($iLeft, $iTop, $iWidth, $iHeight)
    GUICtrlSetStyle(-1, $SS_NOTIFY)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x000000, $bColorTrue)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $iWidth, $iHeight)
    GUICtrlSetState(-1, $GUI_HIDE)
    EndIf
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von m-obi (5. März 2012 um 13:20)