ArrayRemove

Belirtilen eleman sayısını, belirtilen indeksten başlayarak diziden kaldırır.

bool  ArrayRemove(
   void&        array[],            // herhangi bir tip dizisi
   uint         start,              // kaldırmanın başladığı indeks
   uint         count=WHOLE_ARRAY   // eleman sayısı
   );

Parametreler

array[]

[in][out]  Dizi.

start

[in]  Dizi elemanlarının kaldırılmaya başlandığı indeks.

count=WHOLE_ARRAY

[in]  Kaldırılan eleman sayısı. WHOLE_ARRAY değeri, tüm elemanların belirtilen indeksten dizinin sonuna kadar kaldırılması anlamına gelir.

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 (aşırı büyük start değeri),
  • 5056 – ERR_SERIES_ARRAY (dizi değiştirilemez, gösterge tamponu),
  • 4003 – ERR_INVALID_PARAMETER (aşırı büyük count değeri),
  • 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (yıkıcıya sahip karmaşık nesneler içeren sabit boyutlu dizi),
  • 4006 - ERR_INVALID_ARRAY  (Bir yıkıcıya sahip yapı veya sınıf nesneleri içeren sabit boyutlu dizi).

 

Not

Fonksiyon sabit boyutlu bir dizi için kullanılıyorsa, dizi boyutu değişmez: kalan "kuyruk" fiziksel olarak start konumuna kopyalanır. Fonksiyonun nasıl çalıştığını doğru bir şekilde anlamak için aşağıdaki örneğe bakın. "Fiziksel" kopyalama, kopyalanan nesnelerin yapıcı veya kopyalama operatörü çağırarak oluşturulmadığı anlamına gelir. Bunun yerine, bir nesnenin ikili gösterimi kopyalanır. Bu nedenle, ArrayRemove() fonksiyonunu, yıkıcıya sahip nesneleri içeren sabit boyutlu diziye uygulayamazsınız (ERR_INVALID_ARRAY veya ERR_STRUCT_WITHOBJECTS_ORCLASS hatası etkinleştirilir). Böyle bir nesneyi kaldırırken, yıkıcı iki kere çağrılmalıdır - orijinal nesne ve kopyası için.

Elemanları, SetIndexBuffer() fonksiyonu aracılığıyla gösterge tamponları olarak belirtilen dinamik dizilerden kaldıramazsınız. Bu ERR_SERIES_ARRAY hatasına neden olur. Gösterge tamponları için, tüm boyut değiştirme operasyonları terminalin yürütücü alt sistemi tarafından gerçekleştirilir.

Örnek:

//+------------------------------------------------------------------+
//| Script programı başlatma fonksiyonu                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- sabit boyutlu diziyi bildir ve değerleri doldur
   int array[10];
   for(int i=0;i<10;i++)
     {
      array[i]=i;
     }
//--- elemanları kaldırmadan önce diziyi göster
   Print("ArrayRemove() fonksiyonunu çağırmadan önce");
   ArrayPrint(array);
//--- dizideki 2 elemanı sil ve yeni grubu görüntüle
   ArrayRemove(array,4,2);
   Print("ArrayRemove() fonksiyonunu çağırdıktan sonra");
   ArrayPrint(array);
/*
  Gerçekleşim sonucu:
  ArrayRemove() fonksiyonunu çağırmadan önce
   0 1 2 3 4 5 6 7 8 9
  ArrayRemove() fonksiyonunu çağırdıktan sonra
   0 1 2 3 6 7 8 9 8 9
*/

Ayrıca bakınız

ArrayInsert, ArrayCopy, ArrayResize, ArrayFree