ArraySwap

Scambia il contenuto di due array dinamici dello stesso tipo. Per gli array multidimensionali, il numero di elementi in tutte le dimensioni tranne la prima, dovrebbe corrispondere.

bool  ArraySwap(
   void&  array1[],      // primo array
   void&  array2[]       // secondo array
   );

Parametri

array1[]

[in][out]  Array di tipo numerico.

array2[]

[in][out]  Array di tipo numerico.

Valore di ritorno

Restituisce true se ha successo, altrimenti false. In questo caso, GetLastError() restituisce il codice errore ERR_INVALID_ARRAY.

Nota

La funzione accetta array dinamici dello stesso tipo e delle stesse dimensioni tranne il primo. Per i tipi integer, il segno viene ignorato, vale a dire char== uchar)

Esempio:

//+------------------------------------------------------------------+
//| Funzione Start programma Script                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- array per conservare le quotazioni
   double source_array[][8];
   double   dest_array[][8];
   MqlRates rates[];
//--- ottiene i dati delle ultime 20 candele sul corrente timeframe
   int copied=CopyRates(NULL,0,0,20,rates);
   if(copied<=0)
     {
      PrintFormat("CopyRates(%s,0,0,20,rates) fallito, errore=%d",
                  Symbol(),GetLastError());
      return;
     }
//--- imposta la grandezza dell'array per la quantità di dati copiati
   ArrayResize(source_array,copied);
//--- riempie l'array rate_array_1[] per i dati da rates[]
   for(int i=0;i<copied;i++)
     {
      source_array[i][0]=(double)rates[i].time;
      source_array[i][1]=rates[i].open;
      source_array[i][2]=rates[i].high;
      source_array[i][3]=rates[i].low;
      source_array[i][4]=rates[i].close;
      source_array[i][5]=(double)rates[i].tick_volume;
      source_array[i][6]=(double)rates[i].spread;
      source_array[i][7]=(double)rates[i].real_volume;
     }
//--- scambia dati tra source_array[] e dest_array[]
   if(!ArraySwap(source_array,dest_array))
     {
      PrintFormat("ArraySwap(source_array,rate_array_2) fallito, codice errore=%d",GetLastError());
      return;
     }
//--- assicurarsi che l'array di origine sia diventato zero dopo lo swap
   PrintFormat("ArraySwap() done: ArraySize(source_array)=%d",ArraySize(source_array));
//--- visualizzare i dati dell'array di destinazione dest_array[]
   ArrayPrint(dest_array);
  }

Guarda anche

ArrayCopy, ArrayFill, ArrayRange, ArrayIsDynamic