BugFix Posted June 16, 2007 Posted June 16, 2007 (edited) Hi, i know that randallc has included in his 'Array2D.au3' also a insert function. But i think it works a little different. What this function do: - insert a new element with the same occurences in 2nd dimension like base array - insert values in new element (optional, default is blank) - works with 1D and 2D -Arrays Please test it and give me your feedback. Thanks. expandcollapse popup;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Function _Array2DInsert(ByRef $avArray, $iElement [, $sValue='']) ; ; Description Insert an Array element on a given position ; Works with any occurences in 2nd Dimension ; Works also with 1D-Array ; ; Parameter $avArray Given Array ; $iElement 0-based Array Index, to insert new Element ; optional $sValue Value of new Element, parts must be seperate with '|' ; ; Return Succes the given Array (ByRef) with new Element ; Failure 0 and set @error ; @error = 1 given array is not array ; @error = 2 given parts of Element too less/much ; @error = 3 $iElement larger then Ubound ; ; Author BugFix (bugfix@autoit.de) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Func _Array2DInsert(ByRef $avArray, $iElement, $sValue='') If ( Not IsArray($avArray) ) Then SetError(1) Return 0 EndIf Local $UBound2nd = UBound($avArray,2) If @error = 2 Then Local $arTMP[UBound($avArray)+1] If $iElement > UBound($avArray) Then SetError(3) Return 0 EndIf For $i = 0 To UBound($arTMP)-1 If $i < $iElement Then $arTMP[$i] = $avArray[$i] ElseIf $i = $iElement Then If $i < UBound($avArray) Then $arTMP[$i] = $sValue $arTMP[$i+1] = $avArray[$i] Else $arTMP[$i] = $sValue EndIf ElseIf ($i > $iElement) And ($i < UBound($avArray))Then $arTMP[$i+1] = $avArray[$i] EndIf Next Else Local $arTMP[UBound($avArray)+1][$UBound2nd], $arValue 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 If $iElement > UBound($avArray) Then SetError(3) Return 0 EndIf For $i = 0 To UBound($arTMP)-1 If $i < $iElement Then For $k = 0 To $UBound2nd-1 $arTMP[$i][$k] = $avArray[$i][$k] Next ElseIf $i = $iElement Then If $i < UBound($avArray) Then For $k = 0 To $UBound2nd-1 $arTMP[$i][$k] = $arValue[$k+1] $arTMP[$i+1][$k] = $avArray[$i][$k] Next Else For $k = 0 To $UBound2nd-1 $arTMP[$i][$k] = $arValue[$k+1] Next EndIf ElseIf ($i > $iElement) And ($i < UBound($avArray))Then For $k = 0 To $UBound2nd-1 $arTMP[$i+1][$k] = $avArray[$i][$k] Next EndIf Next EndIf $avArray = $arTMP EndFunc ;==>_Array2DInsert_Array2DInsert.au3 Edited June 16, 2007 by BugFix Best Regards BugFix
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now