AddArray

Ajoute des éléments d'un autre tableau à la fin du tableau.

bool  AddArray(
   const CArrayObj *  src      // Pointeur vers le tableau source
   )

Paramètres

src

[in] Pointeur vers une instance de classe CArrayDouble contenant les éléments sources à ajouter.

Valeur de Retour

vrai si réalisé avec succès, faux si les élément ne peuvent pas être ajoutés.

Note

L'ajout des éléments dans le tableau est en fait une copie de pointeurs. En appelant la méthode, plusieurs variables peuvent donc contenir un pointeur vers un objet dynamique.

//--- exemple
extern bool       make_error;
extern int        error;
extern CArrayObj *src;
//--- Crée une nouvelle instance de CArrayObj
//--- La gestion de la mémoire est par défaut activée
CArrayObj *array=new CArrayObj;
//--- Ajoute (copie) les éléments du tableau source
if(array!=NULL)
   bool result=array.AddArray(src);
if(make_error)
  {
   //--- Effectue une action déclenchant une erreur 
   switch(error)
     {
      case 0:
         //--- Enlève le tableau source sans vérifier son mode de gestion de la mémoire 
         delete src;
         //--- Résultat :
         //--- Il est possible de référencer un élément par un pointeur invalide dans le tableau destination
         break;
      case 1:
         //--- Désactive le mode de gestion de la mémoire dans le tableau source
         if(src.FreeMode()) src.FreeMode(false);
         //--- Mais ne supprime pas le tableau source
         //--- Résultat :
         //--- Après avoir supprimé le tableau destination, il est possible de référencer un élément par un pointeur invalide dans le tableau source
         break;
      case 2:
         //--- Désactive le mode de gestion de la mémoire dans le tableau source
         src.FreeMode(false);
         //--- Désactive le mode de gestion de la mémoire dans le tableau destination 
         array.FreeMode(false);
         //--- Résultat :
         //--- Après la fin du programme, une "fuite mémoire" apparaît
         break;
     }
  }
else
  {
   //--- Désactive le mode de gestion de la mémoire dans le tableau source
   if(src.FreeMode()) src.FreeMode(false);
   //--- Supprime le tableau source
   delete src;
   //--- Résultat : 
   //--- Adresser un élément du tableau source sera correct
   //--- La suppression du tableau destination supprimera tous ses éléments
  }
 

Exemple :

//--- exemple d'utilisation de CArrayObj::AddArray(const CArrayObj*)
#include <Arrays\ArrayObj.mqh>
//---
void OnStart()
  {
   CArrayObj *array=new CArrayObj;
   //---
   if(array==NULL)
     {
      printf("Object create error");
      return;
     }
   //--- crée le tableau source
   CArrayObj *src=new CArrayObj;
   if(src==NULL)
     {
      printf("Object create error");
      delete array;
      return;
     }
   //--- réinitialise le flag du mode de suppression
   src.FreeMode(false);
   //--- remplit le tableau source
   //--- . . .
   //--- ajoute un autre tableau
   if(!array.AddArray(src))
     {
      printf("Array addition error");
      delete src;
      delete array;
      return;
     }
   //--- supprime le tableau source sans les éléments
   delete src;
   //--- utilise le tableau
   //--- . . .
   //--- supprime le tableau
   delete array;
  }