UDF > Array >


_ArrayDelete

Supprime les éléments spécifiés dans un tableau 1D ou 2D

#include <Array.au3>
_ArrayDelete ( ByRef $aArray, $vRange )

Paramètres

$aArray Tableau à modifier
$vRange Élément(s) à supprimer - soit un index unique, une chaîne contenant des plages (exemple "0;11-15;24") soit un tableau 1D avec le nombre d'éléments en position [0] (voir l'exemple pour plus de détails)

Valeur de retour

Succès: Retourne la nouvelle taille du tableau (voir Remarques)
Échec: Retourne -1 et définit @error <> 0.
@error: 1 - $aArray n'est pas un tableau
2 - $aArray n'est pas un tableau 1D ou 2D
3 - $vRange n'est pas une chaîne de plage valide
4 - $vRange n'est pas un tableau 1D ou a seulement 1 élément
5 - $vRange a un contenu en dehors des limites du tableau

Remarques

$vRange peut être une chaîne contenant les lignes qui doivent être supprimés. Il peut être un nombre unique ou une plage désignée par les première et dernière lignes séparées par un tiret (-) - plusieurs plages sont séparés par un point-virgule (;).

$vRange peut aussi être un tableau 1D énumérant toutes les lignes à supprimer avec un compteur dans l'élément [0].

Dans les deux cas, les lignes ne sont pas nécessairement dans l'ordre croissant et peuvent être dupliqués.

La fonction ne met PAS à jour l'élément compteur du tableau, mais la valeur de retour de la fonction (si elle réussit) donne l'index le plus grand des lignes.

En relation

_ArrayAdd, _ArrayInsert

Exemple

#include <Array.au3>

Local $aArray[5] = [0, 1, 2, 3, 4]

_ArrayDisplay($aArray, "Original")
_ArrayDelete($aArray, 2)
_ArrayDisplay($aArray, "Element 2 deleted")

Local $aArray_Base[25][4]
For $i = 0 To 24
    For $j = 0 To 3
        $aArray_Base[$i][$j] = String($i) & "-" & String($j)
    Next
Next

; Ligne unique
$aArray = $aArray_Base
_ArrayDisplay($aArray, "AVANT suppression")
_ArrayDelete($aArray, 7)
_ArrayDisplay($aArray, "LIGNE UNIQUE supprimée")

; Chaîne contenant des plages
$aArray = $aArray_Base
Local $sRange = "0;11-15;24"
_ArrayDisplay($aArray, "AVANT suppression")
_ArrayDelete($aArray, $sRange)
ConsoleWrite(" " & @error & @CRLF)
_ArrayDisplay($aArray, "Suppression avec CHAINE DE PLAGE")

; Tableau 1D
$aArray = $aArray_Base
Local $aDel[4] = [3, 5, 11, 13]
_ArrayDisplay($aArray, "AVANT suppression")
_ArrayDelete($aArray, $aDel)
_ArrayDisplay($aArray, "Suppression avec tableau de plage")