• Offizieller Beitrag

    Zur Vervollständigung der Arrayfunktionen hier noch ein ArrayAdd-Funktion auch für 2D-Arrays.
    _Array2DAdd(ByRef $avArray, $sValue)
    Für 2D-Arrays müssen die Werte getrennt durch '|' eingegeben werden.

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $ar1[4] = [1,2,3,4]
    Dim $ar[3][2]
    $ar[0][0] = 1
    $ar[1][0] = 2
    $ar[2][0] = 3
    $ar[0][1] = 4
    $ar[1][1] = 5
    $ar[2][1] = 6

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

    _ArrayDisplay($ar1)
    _Array2DAdd($ar1, '5')
    _ArrayDisplay($ar1)
    _ArrayDisplay($ar)
    _Array2DAdd($ar, '7|8')
    _ArrayDisplay($ar)

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;
    ; Function _Array2DAdd(ByRef $avArray, $sValue='')
    ;
    ; Description Redim Array Size and add an Array element at last position
    ; Works with any occurences in 2nd Dimension
    ; Works also with 1D-Array
    ;
    ; Parameter $avArray Given Array
    ; optional $sValue Value of new Element, parts must be seperate with '|'
    ;
    ; Return Succes -1
    ; Failure 0 and set @error
    ; @error = 1 given array is not array
    ; @error = 2 given parts of Element too less/much
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Func _Array2DAdd(ByRef $avArray, $sValue='')
    If ( Not IsArray($avArray) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($avArray,2)
    If @error = 2 Then
    ReDim $avArray[UBound($avArray)+1]
    $avArray[UBound($avArray)-1] = $sValue
    Else
    Local $arValue
    ReDim $avArray[UBound($avArray)+1][$UBound2nd]
    If $sValue = '' Then
    For $i = 0 To $UBound2nd-2
    $sValue &= '|'
    Next
    EndIf
    $arValue = StringSplit($sValue, '|')
    If $arValue[0] <> $UBound2nd Then
    SetError(2)
    Return 0
    EndIf
    For $i = 0 To $UBound2nd-1
    $avArray[UBound($avArray)-1][$i] = $arValue[$i+1]
    Next
    EndIf
    Return -1
    EndFunc ;==>_Array2DAdd

    [/autoit]