FileWriteInteger

Écrit dans un fichier binaire la valeur du paramètre de type int à partir de la position actuelle du pointeur de fichier.

Écrit dans un fichier CSV ou texte la valeur du paramètre de type int convertie en texte à partir de la position actuelle du pointeur 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 de succès, la fonction renvoie le nombre d’octets écrits. Le pointeur de fichier est déplacé du même nombre d’octets.

Note

Pour l’écriture dans un fichier binaire, cela équivaut à appeler la fonction FileWrite avec un paramètre de type int

int int_value;
FileWrite(file_handle,int_value);

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