ArraySwap

Intervertit les contenus de deux tableaux dynamiques du même type. Pour les tableaux à plusieurs dimensions, le nombre d'éléments de toutes les dimensions, exceptée la première, doit correspondre.

bool  ArraySwap(
   void&  array1[],      // premier tableau
   void&  array2[]       // deuxième tableau
   );

Paramètres

array1[]

[in][out]  Tableau de type numérique.

array2[]

[in][out]  Tableau de type numérique.

Valeur de Retour

Retourne true en cas de succès, sinon false. Dans ce cas, GetLastError() retourne le code d'erreur ERR_INVALID_ARRAY.

Note

La fonction accepte des tableaux dynamiques du même type et de même dimensions, exceptée pour la première. Pour les types integer, le signe est ignoré, c'est à dire que char==uchar

Exemple :

//+------------------------------------------------------------------+
//| Fonction de démarrage du programme                               |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- tableaux pour stocker les cotations
   double source_array[][8];
   double   dest_array[][8];
   MqlRates rates[];
//--- récupère les données des 20 dernières bougies de la période courante
   int copied=CopyRates(NULL,0,0,20,rates);
   if(copied<=0)
     {
      PrintFormat("Echec de CopyRates(%s,0,0,20,rates), erreur=%d",
                  Symbol(),GetLastError());
      return;
     }
//--- définit la taille du tableau pour correspondre à la quantité de données copiées
   ArrayResize(source_array,copied);
//--- remplit le tableau rate_array_1[] avec les données de 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;
     }
//--- intervertit les données entre les tableaux source_array[] et dest_array[]
   if(!ArraySwap(source_array,dest_array))
     {
      PrintFormat("Echec de ArraySwap(source_array,rate_array_2), code d'erreur=%d",GetLastError());
      return;
     }
//--- vérifie que le tableau source est à zéro après l'interversion
   PrintFormat("ArraySwap() effectué : ArraySize(source_array)=%d",ArraySize(source_array));
//--- affiche les données du tableau destination dest_array[]
   ArrayPrint(dest_array);
  }

Voir aussi

ArrayCopy, ArrayFill, ArrayRange, ArrayIsDynamic