2d Array Delete?

  • Spoiler anzeigen
    [autoit]

    ;----------------------------------------------------------------------------------------------------------------------
    ; Fuction _Array2DDelete(ByRef $ARRAY, $iDEL)
    ;
    ; Description Delete one row on a given index in an 1D/2D -Array
    ;
    ; Parameter $ARRAY the array, where one row will deleted
    ; $iDEL Row-Index to delete
    ;
    ; Return Succes -1 ByRef $ARRAY
    ; Failure 0 set @error = 1; given array are not array
    ; set @error = 2; index is out of range
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DDelete(ByRef $ARRAY, $iDEL)
    If ( Not IsArray($ARRAY) ) Then
    SetError(1)
    Return 0
    EndIf
    If ( $iDEL < 0 ) Or ( $iDEL > UBound($ARRAY)-1 ) Then
    SetError(2)
    Return 0
    EndIf
    Local $i, $k, $l
    Local $UBound2nd = UBound($ARRAY,2)
    If @error = 2 Then
    Local $arTmp[UBound($ARRAY)-1]
    $k = 0
    For $i = 0 To UBound($ARRAY)-1
    If $i <> $iDEL Then
    $arTmp[$k] = $ARRAY[$i]
    $k += 1
    EndIf
    Next
    Else
    Local $arTmp[UBound($ARRAY)-1][$UBound2nd]
    $k = 0
    For $i = 0 To UBound($ARRAY)-1
    If $i <> $iDEL Then
    For $l = 0 To $UBound2nd-1
    $arTmp[$k][$l] = $ARRAY[$i][$l]
    Next
    $k += 1
    EndIf
    Next
    EndIf
    $ARRAY = $arTmp
    Return -1
    EndFunc ;==>_Array2DDelete

    [/autoit]

    aus der ArrayMore.au3
    ArrayMore.au3

  • Hallo

    weil wenn ich bei meinem 2d array mit _arraydelete ein array wegmache dan ist das nur noch ein 1d array oder irre ich mich da?

    _ArrayDelete löscht in einem 2D Array alle Einträge (in beiden Dimensionen) des übergebenen Indexes der 1. Dimension. hier das Beispiel aus der Hilfe mgestrickt für 2D-Array:

    Spoiler anzeigen
    [autoit]

    weil wenn ich bei meinem 2d array mit _arraydelete ein array wegmache dan ist das nur noch ein 1d array oder irre ich mich da?

    [/autoit]

    #include <Array.au3>

    Local $avArray[10][2]

    $avArray[0][0] = "JPM"
    $avArray[1][0] = "Holger"
    $avArray[2][0] = "Jon"
    $avArray[3][0] = "Larry"
    $avArray[4][0] = "Jeremy"
    $avArray[5][0] = "Valik"
    $avArray[6][0] = "Cyberslug"
    $avArray[7][0] = "Nutster"
    $avArray[8][0] = "JdeB"
    $avArray[9][0] = "Tylo"
    $avArray[0][1] = "Tyalor"
    $avArray[1][1] = "Schmitt"
    $avArray[2][1] = "Meyer"
    $avArray[3][1] = "Leisre"
    $avArray[4][1] = "Jones"
    $avArray[5][1] = "Realix"
    $avArray[6][1] = "Monstredamus"
    $avArray[7][1] = "Smith"
    $avArray[8][1] = "Hedsik"
    $avArray[9][1] = "Koch"


    _ArrayDisplay($avArray, "$avArray BEFORE _ArrayDelete()")
    _ArrayDelete($avArray, 7)
    _ArrayDisplay($avArray, "$avArray AFTER _ArrayDelete()")

    mfg (Auto)Bert

  • Hallo yxyx,

    Zitat

    hmm warum funzt das dan bei mir nich

    muss ich vll nach dem _arraydelete() ein Redim machen?

    nein, aber du solltest dein Skript einstellen, damit man schauen kann, woran es liegt,

    mfg (Auto)Bert