ArrayInsert

Belirtilen eleman sayısını belirli bir indeksten başlayarak bir kaynak diziden bir alıcı diziye ekler.

bool  ArrayInsert(
   void&        dst_array[],          // alıcı dizi
   const void&  src_array[],          // kaynak dizi
   uint         dst_start,            // ekleme yapılacak alıcı dizi indeksi
   uint         src_start=0,          // kopyalama yapılacak kaynak dizi indeksi
   uint         count=WHOLE_ARRAY     // eklenecek eleman sayısı
   );

Parametreler

dst_array[]

[in][out]  Elemanların ekleneceği alıcı dizi.

src_array[]

[in]  Elemanların kopyalanacağı kaynak dizi.

dst_start

[in]  Kaynak diziden eleman eklemek için alıcı dizideki indeks.

src_start=0

[in]  Elemanların eklenmek üzere alındığı kaynak dizideki indeks.

count

[in]  Kaynak diziden eklenecek eleman sayısı. WHOLE_ARRAY, belirtilen indeksten dizinin sonuna kadar olan tüm elemanları ifade eder.

Geri dönüş değeri

Başarılı olursa true, aksi takdirde false olarak geri döner. Hata hakkında bilgi edinmek için, GetLastError() fonksiyonunu çağırın. Olası hatalar:

  • 5052 – ERR_SMALL_ARRAY (start ve/veya count parametreleri yanlış olarak ayarlı veya src_array[] kaynak dizisi boş),
  • 5056 – ERR_SERIES_ARRAY (dizi değiştirilemez, gösterge tamponu),
  • 4006 – ERR_INVALID_ARRAY (kendine kopyalamaya izin verilmez veya diziler farklı tiptedir ya da sınıf nesneleri veya yıkıcı yapılar içeren sabit boyutlu bir dizi vardır.),
  • 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (Dizi POD yapısı içermez, bu durum basit kopyalamanın mümkün olmadığı anlamına gelir),
  • dst_array[] alıcı dizi boyutunu değiştirirken meydana gelen hatalar, ArrayRemove() fonksiyon tanımında verilir.

 

Not

Fonksiyon sabit boyutlu bir dizi için kullanılıyorsa, dst_array[] alıcı dizinin kendisinin boyutu değişmez. dst_start konumundan başlayarak, alıcı dizinin elemanları sağa kaydırılır (elemanların son count parametresi "çıkar"), kaynak dizinden kopyalanan elemanlar ise onların yerlerini geçer.

Elemanları, SetIndexBuffer() fonksiyonu aracılığıyla gösterge tamponları olarak belirtilen dinamik dizilere ekleyemezsiniz. Gösterge tamponları için, tüm boyut değiştirme operasyonları terminalin yürütücü alt sistemi tarafından gerçekleştirilir.

Kaynak dizide, elemanlar src_start indeksinden başlayarak kopyalanır. Kaynak dizi boyutu değişmeden kalır. Alıcı diziye eklenecek elemanlar, kaynak dizi elemanlarına bağlantılar değildir. Bunun anlamı, iki diziden herhangi birindeki elemanların sonraki değişikliklerinin ikinci dizide yansıtılmamasıdır.

Örnek:

//+------------------------------------------------------------------+
//| Script programı başlatma fonksiyonu                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- sabit boyutlu diziyi bildir ve değerleri doldur
   int array_dest[10];
   for(int i=0;i<10;i++)
     {
      array_dest[i]=i;
     }
   //--- kaynak dizi  
   int array_source[10];
   for(int i=0;i<10;i++)
     {
      array_source[i]=10+i;
     }
//--- elemanları eklemeden önce dizileri göster
   Print("ArrayInsert() fonksiyonunu çağırmadan önce");
   ArrayPrint(array_dest);
   ArrayPrint(array_source);
//--- kaynak diziden 3 eleman ekle ve alıcı dizinin yeni kümesini göster
   ArrayInsert(array_dest,array_source,4,0,3);
   Print("ArrayInsert() fonksiyonunu çağırdıktan sonra");
   ArrayPrint(array_dest);
/*
  Gerçekleşim sonucu
   ArrayInsert() fonksiyonunu çağırmadan önce
   0 1 2 3 4 5 6 7 8 9
   ArrayInsert() fonksiyonunu çağırdıktan sonra
   0 1 2 3 10 11 12 7 8 9
*/

Ayrıca bakınız

ArrayRemove, ArrayCopy, ArrayResize, ArrayFree