ArrayInsert

Insère le nombre spécifié d'éléments d'un tableau source dans un tableau destination à partir d'un indice spécifié.

bool  ArrayInsert(
   void&        dst_array[],          // tableau destination
   const void&  src_array[],          // tableau source
   uint         dst_start,            // indice de début d'insertion dans le tableau destination
   uint         src_start=0,          // indice du tableau source
   uint         count=WHOLE_ARRAY     // nombre d'éléments à insérer
   );

Parameters

dst_array[]

[in][out]  Tableau destination dans lequel les éléments doivent être ajoutés.

src_array[]

[in]  Tableau source depuis lequel les éléments seront ajoutés.

dst_start

[in]  Indice dans le tableau destination pour insérer les éléments depuis le tableau source.

src_start=0

[in]  Indice dans le tableau source, à partir duquel les éléments du tableau source sont pris pour l'insertion.

count

[in]  Nombre d'éléments à ajouter depuis le tableau source. WHOLE_ARRAY signifie tous les éléments à partir de l'indice spécifié jusqu'à la fin du tableau.

Valeur de Retour

Retourne true en cas de succès, sinon false. Pour obtenir des informations sur l'erreur, appelez la fonction GetLastError(). Erreurs possibles :

  • 5052 — ERR_SMALL_ARRAY (le paramètre start et/ou count sont incorrects ou le tableau source src_array[] est vide),
  • 5056 — ERR_SERIES_ARRAY (le tableau ne peut pas être changé, buffer de l'indicateur),
  • 4006 — ERR_INVALID_ARRAY (la copie sur le même tableau n'est pas autorisée, ou les tableaux sont de types différents, ou l'un des tableaux de taille fixe contient des objets de classe ou des structures),
  • 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (le tableau ne contient aucune structure POD, signifiant qu'une copie simple n'est pas possible),
  • Les erreurs survenues lors du changement de la taille du tableau destination dst_array[] sont fournies dans la description de la fonction ArrayRemove().

 

Note

Si la fonction est utilisée pour un tableau de taille fixe, la taille du tableau destination dst_array[] lui-même ne change pas. A partir de la position dst_start, les éléments du tableau destination sont décalés vers la droite (les derniers comptes des éléments "décollent"), tandis que les éléments copiés depuis le tableau source prennent leurs places.

Vous ne pouvez pas insérer les éléments vers un tableau dynamique désigné comme buffer d'un indicateur avec la fonction SetIndexBuffer(). Pour les buffers d'indicateurs, toutes les opérations de changement de taille sont effectuées par le sous-système d'exécution du terminal.

Dans le tableau source, les éléments sont copiés depuis l'indice src_start. La taille du tableau source reste inchangée. Les éléments devant être ajoutés dans le tableau destination ne sont pas liés aux éléments du tableau source. Cela signifie que les changements suivants des éléments dans n'importe lequel des deux tableaux ne seront pas reflétés dans le second tableau.

Exemple:

//+------------------------------------------------------------------+
//| Fonction de démarrage du script                                     |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- déclare le tableau de taille fixe et remplit les valeurs
   int array_dest[10];
   for(int i=0;i<10;i++)
     {
      array_dest[i]=i;
     }
   //--- tableau source   
   int array_source[10];
   for(int i=0;i<10;i++)
     {
      array_source[i]=10+i;
     }
//--- affiche les tableaux avant d'insérer les éléments
   Print("Avant d'appeler ArrayInsert()");
   ArrayPrint(array_dest);
   ArrayPrint(array_source);
//--- insère 3 éléments du tableau source et affiche le nouvel ensemble du tableau destination
   ArrayInsert(array_dest,array_source,4,0,3);
   Print("Après l'appel à ArrayInsert()");
   ArrayPrint(array_dest);
/*
  Résultat d'exécution
   Avant d'appeler ArrayInsert()
   0 1 2 3 4 5 6 7 8 9
   Après l'appel à ArrayInsert()
   0 1 2 3 10 11 12 7 8 9
*/

Voir également

ArrayRemove, ArrayCopy, ArrayResize, ArrayFree