FileWriteInteger

Inscrit au fichier bin la valeur du paramètre du type int de la position courante de l'indicateur de fichier.

uint  FileWriteInteger(
   int  file_handle,        // handle du fichier
   int  value,              // valeur enregistrée
   int  size=INT_VALUE      // taille en bytes
   );

Paramètres

file_handle

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

value

[in]  La valeur entière.

size=INT_VALUE

[in]  Le nombre de bytes (jusqu'à 4 y compris), qu'il faut enregistrer. On prévoit les constantes correspondantes: CHAR_VALUE=1, SHORT_VALUE=2 et INT_VALUE=4, ainsi la fonction peut enregistrer la valeur entière du type char, uchar, short, ushort, int ou uint

La valeur rendue

En cas du succès la fonction rend le nombre inscrit des bytes. L'indicateur de fichier se déplace sur le même nombre de bytes.

Exemple:

//+------------------------------------------------------------------+
//|                                        Demo_FileWriteInteger.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"
//--- montrons la fenêtre des paramètres d'entrée au lancement du script
#property script_show_inputs
//--- les paramètres pour la réception des données du terminal
input string             InpSymbolName="EURUSD";           // la paire de devise
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // le temps trame
input datetime           InpDateStart=D'2013.01.01 00:00'; // la date de commencement du copiage des données
//--- les paramètres pour l'enregistrement des données au fichier
input string             InpFileName="Trend.bin"// le nom du fichier
input string             InpDirectoryName="Data"// le nom du répertoire
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//---oblitérons la valeur de l'erreur
   ResetLastError();
//--- copions le prix de la clôture pour chaque barre
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("On n'a pas réussi de copier les valeurs des prix de la clôture. Le code de l'erreur = %d",GetLastError());
      return;
     }
//---copions le temps pour chaque barre
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("On n'a pas réussi de copier les valeurs du temps. Le code de l'erreur = %d",GetLastError());
      return;
     }
//--- recevrons la taille du tampon
   size=ArraySize(close_buff);
//--- ouvrirons le fichier pour l'enregistrement des valeurs de l'indicateur (s'il n'existe pas, il sera créé automatiquement)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Le fichier %s est ouvert pour l'enregistrement",InpFileName);
      PrintFormat("Le voie vers le fichier: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- 
      int   up_down=0; // le drapeau de la tendance
      int   arr_size;  // la taille du tableau arr
      uchar arr[];     // le tableau du type uchar
      //--- enregistrons les valeurs du temps au fichier
      for(int i=0;i<size-1;i++)
        {
         //--- comparerons les prix de la clôture des barres courante et suivante
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- enregistrons la valeur de la date au fichier, en utilisant FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- d'abord enregistrons le nombre de symboles dans le tableau
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- enregistrons les symboles eux-mêmes
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- changeons le drapeau de la tendance
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- enregistrons la valeur de la date au fichier, en utilisant FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //---d'abord enregistrons le nombre de symboles dans le tableau
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- enregistrons les symboles eux-mêmes
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- changeons le drapeau de la tendance
               up_down=-1;
              }
           }
        }
      //--- fermons le fichier
      FileClose(file_handle);
      PrintFormat("Les données sont enregistrés, le fichier %s est fermé",InpFileName);
     }
   else
      PrintFormat("On n'a pas réussi d'ouvrir le fichier %s, Le code de l'erreur = %d",InpFileName,GetLastError());
  }

Voir aussi

IntegerToString, StringToInteger, Les types entiers