Insère une nouvelle valeur à la position spécifiée d'un tableau 1D ou 2D
#include <Array.au3>
_ArrayInsert ( ByRef $aArray, $vRange [, $vValue = "" [, $iStart = 0 [, $sDelim_Item = "|" [, $sDelim_Row = @CRLF [, $iForce = $ARRAYFILL_FORCE_DEFAULT]]]]] )
$aArray | Tableau à modifier |
$vRange | Position(s) à laquelle insérer l'élément(s) - voir Remarques pour le format |
$vValue | [optionnel] Valeur(s) à ajouter - peut être une variable unique, une chaîne avec séparateurs (passé dans $sDelim_Item) ou un tableau 1D |
$iStart | [optionnel] Colonne dans laquelle l'insertion doit commencer (tableau 2D uniquement) |
$sDelim_Item | [optionnel] Séparateur utilisé si une chaîne doit être divisée en éléments |
$sDelim_Row | [optionnel] Séparateur utilisé si une chaîne doit être divisée en lignes (2D uniquement) |
$iForce | [optionnel] Maintient le comportement par défaut, ARRAYFILL_FORCE_DEFAULT (0) Force l'addition de $vValue comme élément unique, $ARRAYFILL_FORCE_SINGLEITEM (1) Ou force le type de données pour toute addition d'éléments $ARRAYFILL_FORCE_INT (2) $ARRAYFILL_FORCE_NUMBER (3) $ARRAYFILL_FORCE_PTR (4) $ARRAYFILL_FORCE_HWND (5) $ARRAYFILL_FORCE_STRING (6) Voir Remarques pour plus de détails |
Succès: | Retourne la nouvelle taille du tableau. |
Échec: | Retourne 0 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 a un format incorrect (caractère incorrect ou non ordonnée) 4 - $vRange n'est pas un tableau 1D ou a seulement 1 élément 5 - $vRange a des limites en dehors des limites du tableau 6 - $istart est en dehors des limites du tableau (2D uniquement) 7 - $vValeur n'est pas un tableau 2D (2D uniquement) 8 - $vValeur a trop de colonnes pour s'adapter à $aArray |
$vRange peut être une chaîne contenant les lignes avant lesquelles une ligne doit être insérée. 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 (-) ou plusieurs éléments séparés par un point-virgule (;).
$vRange peut aussi être un tableau 1D contenant les lignes avant lesquelles une ligne doit être insérée avec le nombre d'éléments dans l'élément [0].
Dans les deux cas, les lignes doivent être en ordre croissant, mais peuvent être dupliquées.
Si $vValeur est une chaîne avec séparateurs tous les éléments sont insérés dans le tableau sous forme de chaînes. Cela peut être supplanté en utilisant le paramètre $iForce qui force les éléments dans le type de données requis. Notez que tous les éléments de la chaîne avec séparateurs sont convertis - si les éléments sont de différents types de données, ils doivent être passés sous forme de tableau de sorte que leur type de donnée spécifique est conservé.
Le mode d'insertion dépend du type $vValeur :
Le mode d'insertion dépend du type de $vValeur, mais l'utilisation de $iForce peut modifier ceci. Le comportement par défaut est le suivant:
Tableaux 1D:
Elément unique - insére l'élément $vValue
Chaîne avec séparateurs $sDelim_Item - insère autant de lignes que de sous-chaînes
Tableau 1D de base 0 - insèree autant de lignes qu'il y a d'éléments dans le tableau
Tableaux 2D:
Element unique - insère une rangée contenant $vValue dans la première colonne
Chaîne avec séparateurs $sDelim_Item - insère une ligne à la première position, les colonnes sont remplies si il y a assez de sous-chaînes
Chaîne avec séparateurs $sDelim_Row - insère autant de lignes que de sous-chaînes, une seule colonne est remplie
Chaîne avec double séparateurs - insère autant de ligne que de sous-chaînes de $sDelim_Row, autant de colonnes que de sous-chaînes de $sDelim_Item
Tableau 2D de base 0 - insère autant de lignes que de lignes du tableau, autant de colonnes que de colonnes du tableau
Une chaîne vide ("") est ajoutée s'il n'y a pas suffisamment d'éléments spécifiés dans $vValeur. Les éléments en excès sont ignorés.
La définition du paramètre $iForce peut modifier le comportement par défaut de l'insertion ou modifier le type de données pour les éléments ajoutés. Il peut être défini comme suit:
$ARRAYFILL_FORCE_DEFAULT (par défaut):
- Les éléments sont éclatés de la manière décrite ci-dessus. Les éléments uniques et les éléments d'un tableau conservent leurs types de données - les chaînes avec séparateurs sont ajoutées sous forme de chaînes.
$ARRAYFILL_FORCE_SINGLEITEM:
- Si $aArray est un tableau 1D, $vValeur est ajoutée comme élément unique.
- Si $aArray est un tableau 2D, le paramètre est ignoré.
$ARRAYFILL_FORCE_INT, $ARRAYFILL_FORCE_NUMBER, $ARRAYFILL_FORCE_PTR, $ARRAYFILL_FORCE_HWND, $ARRAYFILL_FORCE_STRING
- Si $vValeur est un élément unique, il est forcé dans le type de données défini - par défaut, il conserverait son type de données existante.
- Si $vValeur est une chaîne avec séparateurs, tous les éléments sont forcés dans le type de données spécifié - par défaut, ils seraient ajoutés au tableau sous forme de chaînes. Si différents types de données sont nécessaires pour les éléments, ils doivent être passés comme un tableau.
- Si $vValeur est un tableau, le paramètre est ignoré et les éléments du tableau sont ajoutés en conservant leurs types de données existants.
Si $iForce est défini sur toute autre valeur, il est ignoré.
La fonction ne met PAS à jour l'élément compteur du tableau, mais la valeur retournée par la fonction (si elle réussit) donne le nouvel index le plus grand du tableau.
_ArrayAdd, _ArrayDelete, _ArrayPop, _ArrayPush
#include <Array.au3> Local $aArray_Base[10] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] _ArrayDisplay($aArray_Base, "1D - Tableau d'origine") ; Insére un élément unique Local $aArray = $aArray_Base _ArrayInsert($aArray, 2, "Insère avant 2") _ArrayDisplay($aArray, "1D - Elément unique") ; Insére une chaîne avec séparateurs en utilisant une plage du tableau $aArray = $aArray_Base Local $aRange[4] = [3, 3, 5, 9] Local $sFill = "Insère avant 3|Insère avant 5|Insère avant 9" _ArrayInsert($aArray, $aRange, $sFill) _ArrayDisplay($aArray, "1D - Chaîne de position") ; Insére un tableau 1D en utilisant une plage de chaîne $aArray = $aArray_Base Local $aFill[4] = ["Insère avant 2", "Insère avant 6.1", "Insère avant 6.2", "Insère avant 7"] _ArrayInsert($aArray, "2;6;6;7", $aFill) _ArrayDisplay($aArray, "1D - Tableau 1D")
#include <Array.au3> Local $aArray_Base[10][3] For $i = 0 To 9 For $j = 0 To 2 $aArray_Base[$i][$j] = String($i) & " - " & String($j) Next Next _ArrayDisplay($aArray_Base, "2D - Tableau d'origine") ; Insére un élément unique Local $aArray = $aArray_Base _ArrayInsert($aArray, 7, "Insère avant 7-0") _ArrayDisplay($aArray, "2D - Elément unique") ; Insére un seul élément dans une colonne définie $aArray = $aArray_Base _ArrayInsert($aArray, 3, "Insère avant 3-1", 1) _ArrayDisplay($aArray, "2D - Colonne définie") ; Insére un élément d'une chaîne avec séparateurs - inséré comme une ligne - les autres lignes sont remplies avec "" $aArray = $aArray_Base Local $sFill = "Avant 3-0|Avant 3-1|Avant 3-2" _ArrayInsert($aArray, "3;5;9", $SFILL) _ArrayDisplay($aArray, "2D - Chaîne avec séparateurs") ; Insére une ligne d'une chaîne avec séparateurs en utilisant une plage du tableau - inséré comme 3 lignes, les autres colonnes sont remplis avec "" $aArray = $aArray_Base Local $aRange[4] = [3, 3, 5, 9] $sFill = "Avant 3-2" & @CRLF & "Avant 5-2" & @CRLF & "Avant 9-2" _ArrayInsert($aArray, $aRange, $sFill, 2) ; Insére dans la colonne 2 _ArrayDisplay($aArray, "2D - Chaîne avec séparateurs") ; Insére un élément comme ligne d'une chaîne avec séparateurs - inséré comme 4 lignes $aArray = $aArray_Base $sFill = "Avant 3-0|3-1|3-2" & @CRLF & "Avant 5a|5-1a|5-2a" & @CRLF & "Avant 5b|5-1b|5-2b" & @CRLF & "Avant 9|9-1|9-2" _ArrayInsert($aArray, "3;5;5;9", $SFILL) _ArrayDisplay($aArray, "2D - Chaîne avec séparateurs élément & ligne") ; Insére un tableau 2D $aArray = $aArray_Base Local $aFill_1D[3][3] = [["Avant 2", "2-1", "2-2"],["Avant 3", "3-1", "3-2"],["Avant 4", "4-1", "4-2"]] _ArrayInsert($aArray, "2-4", $aFill_1D) _ArrayDisplay($aArray, "2D - Tableau 2D")
#include <Array.au3> #include <MsgBoxConstants.au3> Local $aArray_Base[2][2] = [["Org Item 0 - 0", "Org Item 0 - 1"],["Org Item 1 - 0", "Org Item 1 - 1"]] Local $aArray Local $sFill = 1 & @CRLF & 2 ; Notez que l'ajout est fait en tant que type de données nombre ici MsgBox($MB_SYSTEMMODAL, "Delimited string to add", $sFill) ; Ajoute des sous-chaînes d'une chaîne avec séparateurs $aArray = $aArray_Base _ArrayInsert($aArray, "0;1", $sFill) _ArrayDisplay($aArray, "Converti en chaîne") ; Mais convertit en type de données chaîne ici MsgBox($MB_SYSTEMMODAL, "Result", "Data:" & @TAB & $aArray[2][0] & @CRLF & "Datatype:" & @TAB & VarGetType($aArray[2][0])) ; Ajoute des sous-chaînes d'une chaîne avec séparateurs $aArray = $aArray_Base ; Maintenant force la conservation du type de données Local $hDataType = Number _ArrayInsert($aArray, "0;1", $SFILL, Default, Default, Default, $hDataType) _ArrayDisplay($aArray, "Forçé à nombre") ; Et le type de données est conservée MsgBox($MB_SYSTEMMODAL, "Resultat", "Donnée:" & @TAB & $aArray[2][0] & @CRLF & "Datatype:" & @TAB & VarGetType($aArray[2][0]))