FileWriteArray

Inscrit au fichier du type BIN les tableaux des tous les types, sauf les tableaux de chaîne (peut être un tableau des structures ne contenant pas les chaînes et les tableaux dynamiques).

uint  FileWriteArray(
   int          file_handle,         // handle du fichier
   const void&  array[],             // tableau
   int          start=0,             // index initial dans le tableau
   int          count=WHOLE_ARRAY    // nombre d'éléments
   );

Paramètres

file_handle

[in]  Le descripteur de fichier rendu par la fonction FileOpen().

array[]

[out]  Le tableau pour l'enregistrement.

start=0

[in]  L'index initial dans le tableau (le numéro du premier élément inscrit).

count=WHOLE_ARRAY

[in]  Le nombre d'éléments inscrits (WHOLE_ARRAY signifie que s'inscrivent tous les éléments à partir du numéro start jusqu'à la fin du  tableau).

La valeur rendue

Le nombre d'éléments inscrits.

Note

Le tableau de chaîne peut s'inscrire seulement au fichier du type TXT. Dans ce cas les chaînes s'achèvent automatiquement par les caractères de la fin de la ligne  "\r\n". En fonction du type du fichier  ANSI ou UNICODE, les chaînes se transforment au codage ansi, ou non.

Exemple:

//+------------------------------------------------------------------+
//|                                          Demo_FileWriteArray.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- les paramètres d'entrée
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| La structure pour stocker des données sur les prix                            |
//+------------------------------------------------------------------+
struct prices
  {
   datetime          date; // lq date
   double            bid;  // le prix bid
   double            ask;  // le prix ask
  };
//--- les variables globales
int    count=0;
int    size=20;
string path=InpDirectoryName+"//"+InpFileName;
prices arr[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- l'allocation de la mémoire pour un tableau
   ArrayResize(arr,size);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- un enregistrement des chaînes count restées, si count<n
   WriteData(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- sauvegardons les données au tableau
   arr[count].date=TimeCurrent();
   arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
   arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- affichons les données courantes
   Print("Date = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask);
//---augmentons le compteur
   count++;
//--- si le tableau est rempli, enregistrons les données dans un fichier, et le remettons au zéro
   if(count==size)
     {
      WriteData(size);
      count=0;
     }
  }
//+------------------------------------------------------------------+
//| L'enregistrement n des éléments d'un tableau dans un fichier                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- ouvrons le fichier
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- enregistrons les données du tableau à la fin du fichier
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- fermons le fichier
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }

Voir aussi

Les variables, FileSeek