- 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
#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
_ArrayDisplay($ar1)
_Array2DAdd($ar1, '5')
_ArrayDisplay($ar1)
_ArrayDisplay($ar)
_Array2DAdd($ar, '7|8')
_ArrayDisplay($ar)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; 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