Array +1

  • Hi,
    habe mir ein wachsendes Array gebaut :

    [autoit]

    Func Add_One($Array)
    Dim $TMP_Array[UBound($Array) + 1]

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

    For $i = 0 To UBound($Array) - 1 Step 1
    $TMP_Array[$i] = $Array[$i]
    Next
    Return $TMP_Array
    EndFunc ;==>Add_One

    [/autoit]
    Spoiler anzeigen

    BSP:

    [autoit]

    #include <Array.au3>
    Dim $Array1[2]

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

    $Array1[0] = 'Hallo'
    $Array1[1] = 'Welt'
    _ArrayDisplay($Array1)
    $Array1 = Add_One($Array1)
    $Array1[2] = '!!!'
    _ArrayDisplay($Array1)

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

    Func Add_One($Array)
    Dim $TMP_Array[UBound($Array) + 1]

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

    For $i = 0 To UBound($Array) - 1 Step 1
    $TMP_Array[$i] = $Array[$i]
    Next
    Return $TMP_Array
    EndFunc ;==>Add_One

    [/autoit]

    zumindest eine Funktion um einen wert mehr hinzuzufügen :D
    Habe nemlich keine passende Funktion dafür gefunden ...

    hoffe es ist gut geworden :rofl:

    lg PCeumel

  • Hi,
    Wie gesagt es gibt _ArrayAdd
    2. Um Speicher zu sparen benutzt man ByRef um nicht die Array in die Variable zu kopieren sondern nur den Pointer zu übergeben. D.h. alle veränderungen die du vornimmst sind in dem Array später auch zu sehen ohne Return $aArray.
    Hier ein kurzes Beispiel:

    [autoit]

    #include <Array.au3>

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

    Dim $aArray[1] = [0]

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

    _ArrayDisplay($aArray)

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

    _Veraendere($aArray)

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

    _ArrayDisplay($aArray)

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

    Func _Veraendere(ByRef $array)
    $array[0] = 500
    EndFunc ;==>_Veraendere

    [/autoit]


    3. Es gibt ReDim um die Größe eines Arrays zu verändern. Dabei gehen keine Daten verlohren es sein denn zu veränders Dimensionen und/oder Spaltenanzahl.