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]))