AddArray

Başka bir diziden alınan elemanları dizinin sonuna ekler.

bool  AddArray(
   const CArrayObj *  src      // kaynak dizinin işaretçisi 
   )

Parametreler

src

[in] CArrayDouble sınıf örneğinin işaretçisi - eklenecek elemanların kaynağı.

Dönüş Değeri

Başarılı ise 'true', eleman eklenemezse 'false'.

Not

Dizi elemanlarının diziye eklenmesi aslında işaretçilerin kopyalanması anlamına gelir. Bu nedenle yöntemin çağrılması bir "tehlike" yaratabilir — bir dinamik nesnenin işaretçisi birden fazla değişken içerisinde olabilir.

//--- örnek
extern bool       make_error;
extern int        error;
extern CArrayObj *src;
//--- Yeni bir CArrayObj örneği oluştur
//--- Varsayılan olarak bellek yönetimi açık
CArrayObj *array=new CArrayObj;
//--- kaynak dizinin elemanlarını ekle (kopyala)
if(array!=NULL)
   bool result=array.AddArray(src);
if(make_error)
  {
   //--- hatalı işlemler yap 
   switch(error)
     {
      case 0:
         //--- bellek yönetim bayrağını denetlemeden kaynak diziyi kaldır 
         delete src;
         //--- Sonuç:
         //--- bir elemanı, alıcı dizideki geçersiz bir işaretçiyle adreslemek mümkündür
         break;
      case 1:
         //--- kaynak dizideki bellek yönetim mekanizmasını devre dışı bırak
         if(src.FreeMode()) src.FreeMode(false);
         //--- Ama kaynak diziyi silme
         //--- Sonuç:
         //--- kaldırma işleminin ardından bir elemanı, kaynak dizideki geçersiz bir işaretçiyle adreslemek mümkündür
         break;
      case 2:
         //--- kaynak dizideki bellek yönetim mekanizmasını devre dışı bırak
         src.FreeMode(false);
         //--- alıcı dizideki bellek yönetim mekanizmasını devre-dışı bırak 
         array.FreeMode(false);
         //--- Sonuç:
         //--- Programın sonlandırılmasının ardından bir "bellek sızıntısı" al
         break;
     }
  }
else
  {
   //--- kaynak dizideki bellek yönetim mekanizmasını devre dışı bırak
   if(src.FreeMode()) src.FreeMode(false);
   //--- kaynak diziyi sil
   delete src;
   //--- Sonuç:
   //--- alıcı dizi elemanının adreslenmesi doğru olacak
   //--- Alıcı dizinin silinmesi elemanlarının da silinmesine yol açacak
  }
 

Örnek:

//--- CArrayObj::AddArray(const CArrayObj*)için bir örnek
#include <Arrays\ArrayObj.mqh>
//---
void OnStart()
  {
   CArrayObj *array=new CArrayObj;
   //---
   if(array==NULL)
     {
      printf("Nesne oluşturma hatası");
      return;
     }
   //--- kaynak diziyi oluştur
   CArrayObj *src=new CArrayObj;
   if(src==NULL)
     {
      printf("Nesne oluşturma hatası");
      delete array;
      return;
     }
   //--- serbest durum bayrağını sıfırla
   src.FreeMode(false);
   //--- diziyi doldur
   //--- . . .
   //--- yeni dizi ekle
   if(!array.AddArray(src))
     {
      printf("Dizi ekleme hatası");
      delete src;
      delete array;
      return;
     }
   //--- kaynak diziyi elemanlarını silmeden kaldır
   delete src;
   //--- diziyi kullan
   //--- . . .
   //--- diziyi sil
   delete array;
  }