AddArray
Am Ende des Arrays fügt Elementen aus einem anderen Array hinzu.
bool AddArray(
const CArrayObj * src
)
|
Parameter
src
[in] Ein Zeiger auf die Instanz der CArrayDouble-Klasse, die eine Quelle von Elementen für Hinzufügen ist.
Rückgabewert
Hinweis
//--- example
extern bool make_error;
extern int error;
extern CArrayObj *src;
//--- Eine Instanz der Klasse CArrayObj erstellen
//--- Der Speicherverwaltungsmechanismus ist aktiviert
CArrayObj *array=new CArrayObj;
//--- Elemente aus dem Quelle-Array hinzufügen (kopieren)
if(array!=NULL)
bool result=array.AddArray(src);
if(make_error)
{
//--- Fehler machen
switch(error)
{
case 0:
//--- das Quelle-Array löschen, ohne sein Flag von Speichersteuerung zu prüfen
delete src;
//--- das Ergebnis:
//--- Anruf ist möglich
//--- ein "ungültiger" Zeiger im Empfänger-Array
break;
case 1:
//--- den Speicherverwaltungsmechanismus im Quelle-Array deaktivieren
if(src.FreeMode()) src.FreeMode(false);
//--- aber das Quelle-Array nicht löschen
//--- das Ergebnis:
//--- nach dem Löschen des Empfänger-Array ist Anruf möglich
//--- mit solchem Zeiger im Quelle-Array
break;
case 2:
//--- den Speicherverwaltungsmechanismus im Quelle-Array deaktivieren
src.FreeMode(false);
//--- den Speicherverwaltungsmechanismus im Empfänger-Array deaktivieren
array.FreeMode(false);
//--- das Ergebnis:
//--- Nach Abschluss des Programms, haben wir die "Speicherleck"
break;
}
}
else
{
//--- den Speicherverwaltungsmechanismus im Quelle-Array deaktivieren
if(src.FreeMode()) src.FreeMode(false);
//--- das Quelle-Array löschen
delete src;
//--- das Ergebnis:
//--- Anruf von Elementen des Empfänger-Arrays ist korrekt
//--- Löschen vom Empfänger-Array löscht seinen Elemente
}
|
Beispiel:
//--- example for CArrayObj::AddArray(const CArrayObj*)
#include <Arrays\ArrayObj.mqh>
//---
void OnStart()
{
CArrayObj *array=new CArrayObj;
//---
if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayObj *src=new CArrayObj;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- reset free mode flag
src.FreeMode(false);
//--- fill source array
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array without elements
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}
|