ArrayInsert

Inserisce il numero specificato di elementi da un array sorgente ad uno ricevente a partire da un indice specificato.

bool  ArrayInsert(
   void&        dst_array[],          // array ricevente
   const void&  src_array[],          // array sorgente
   uint         dst_start,            // indice dell'array ricevente da inserire
   uint         src_start=0,          // indice dell'array sorgente da copiare
   uint         count=WHOLE_ARRAY     // numero di elementi da inserire
   );

Parametri

dst_array[]

[in] [out] Array ricevente a cui devono essere aggiunti gli elementi.

src_array[]

[in] Array sorgente da cui devono essere aggiunti gli elementi.

dst_start

[in] Indice dell'array ricevente per l'inserimento di elementi dall'array sorgente.

src_start=0

[in] Indice dell'array sorgente, a partire dal quale gli elementi dell'array sorgente vengono presi per l'inserimento.

count

[in] Numero di elementi da aggiungere dall'array sorgente. WHOLE_ARRAY indica tutti gli elementi, dall'indice specificato fino alla fine dell'array.

Valore di ritorno

Restituisce true se ha successo, altrimenti - false. Per ottenere informazioni sull'errore, chiamare la funzione GetLastError(). Possibili errori:

  • 5052 – ERR_SMALL_ARRAY (i parametri start e/o count sono impostati in modo errato o l'array sorgente src_array[] è vuoto),
  • 5056 – ERR_SERIES_ARRAY (l'array non può essere modificato, buffer indicatore),
  • 4006 – ERR_INVALID_ARRAY (la copia su se stesso non è consentita, o gli array sono di tipo diverso, oppure esiste un array a grandezza fissa contenente oggetti classe o distruttori di strutture),
  • 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (l'array non contiene strutture POD e sta a significare che una semplice copia è impossibile),
  • Si sono verificati errori quando la modifica della grandezza dell'array ricevente dst_array[] è stata fornita nella descrizione della funzioneArrayRemove() .

 

Nota

Se la funzione viene utilizzata per un array di grandezza fissa, la grandezza dell'array ricevente stesso dst_array[] non cambia. A partire dalla posizione dst_start, gli elementi dell'array ricevente vengono spostati a destra (l'ultimo counts degli elementi "viene fuori"), mentre gli elementi copiati dall'array sorgente prendono il loro posto.

Non è possibile inserire gli elementi negli array dinamici designati come buffer indicatore dalla funzione SetIndexBuffer(). Per i buffer indicatori, tutte le operazioni di modifica della grandezza vengono eseguite dal sottosistema di esecuzione del terminale.

Nell'array sorgente, gli elementi vengono copiati a partire dall'indice src_start. La grandezza dell'array sorgente rimane invariata. Gli elementi da aggiungere all'array ricevente non sono collegamenti agli elementi dell'array sorgente. Ciò significa che le successive modifiche degli elementi in uno dei due array non si riflettono nel secondo.

Esempio:

//+------------------------------------------------------------------+
//| Funzione Start del programma di script |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- dichiara l'array a dimensione fissa e riempie i valori
   int array_dest[10];
   for(int i=0;i<10;i++)
     {
      array_dest[i]=i;
     }
   //--- array sorgente   
   int array_source[10];
   for(int i=0;i<10;i++)
     {
      array_source[i]=10+i;
     }
//--- mostra gli array prima di inserire gli elementi
   Print("Prima di chiamare ArrayInsert()");
   ArrayPrint(array_dest);
   ArrayPrint(array_source);
//--- inserisce 3 elementi dall'array sorgente e mostra il nuovo set dell'array ricevente
   ArrayInsert(array_dest,array_source,4,0,3);
   Print("Dopo aver chiamato ArrayInsert()");
   ArrayPrint(array_dest);
/*
  Risultato dell'esecuzione
   Prima di chiamare ArrayInsert()
   0 1 2 3 4 5 6 7 8 9
   Dopo aver chiamato ArrayInsert()
   0 1 2 3 10 11 12 7 8 9
*/

Guarda anche

ArrayRemove, ArrayCopy, ArrayResize, ArrayFree