AddArray
Ajoute des éléments d'un autre tableau à la fin du tableau.
bool AddArray(
const CArrayObj * src tableau
)
|
Paramètres
src
[in] Pointeur vers une instance de classe CArrayDouble contenant les éléments sources à ajouter.
Valeur de Retour
Note
//--- 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;
}
|