FileWriteInteger

Scrive in un file binario il valore del parametro di tipo int dalla posizione corrente del puntatore del file.

Scrive in un file CSV o di testo il valore del parametro di tipo int convertito in testo dalla posizione corrente del puntatore del file.

uint  FileWriteInteger(
   int  file_handle,        // File handle
   int  value,              // Valore da scrivere
   int  size=INT_VALUE      // Grandezza in byte
   );

Parametri

file_handle

[in] Il descrittore di file restituito da FileOpen().

valore

[in] Valore integer.

size=INT_VALUE

[in] Numero di byte (fino a 4 inclusivi), che devono essere scritti. Le costanti sono disponibili le corrispondenti: CHAR_VALUE=1, SHORT_VALUE=2 ed INT_VALUE=4, per cui la funzione può scrivere il valore integer di tipo char, uchar, short, ushort, int o uint.

Valore restituito

In caso di successo la funzione restituisce il numero di byte scritti. Il puntatore del file viene spostato dello stesso numero di byte.

Nota

Nel caso di scrittura in un file binario, equivale alla chiamata della funzione FileWrite con un parametro di tipo int

int int_value;
FileWrite(file_handle,int_value);

Esempio:

//+--------------------------------------------------------------------------------+
//|                                                      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"
//--- mostra la finestra dei parametri di input quando si lancia lo script
#property script_show_inputs
//--- parametri per la ricezione dei dati dal terminale
input string             InpSymbolName="EURUSD";           // coppia di valute
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // time frame
input datetime           InpDateStart=D'2013.01.01 00:00'; // data di inizio copiatura dati
//--- parameters for writing data to the file
input string             InpFileName="Trend.bin"; // nome file
input string             InpDirectoryName="Data"; // nome directory
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//--- resetta il valore dell' errore
   ResetLastError();
//--- copia i prezzi di chiusura per ogni barra
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("Fallimento nel copiare i valori dei prezzi close. Codice Errore = %d",GetLastError());
      return;
     }
//--- copia l'orario per ogni barra
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Fallimento nel copiare i valori temporali. Codice Errore = %d",GetLastError());
      return;
     }
//--- riceve la grandezza del buffer
   size=ArraySize(close_buff);
//--- apre il file per la scrittura dei valori (se il file è assente, verrà automaticamente creato)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("il file %s è disponibile per la scrittura",InpFileName);
      PrintFormat("Percorso file: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- 
      int   up_down=0; // trend flag
      int   arr_size;  // grandezza dell' array arr
      uchar arr[];     // array di tipo uchar
      //--- scrive i valori orari nel file
      for(int i=0;i<size-1;i++)
        {
         //--- confronta i prezzi di chiusura della barra corrente e successiva
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- scrive i valori data nel file usando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- prima, scrive il numero di simboli nell'array
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- scrive i simboli
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- cambia il trend flag
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- scrive i valori data nel file usando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- prima, scrive il numero di simboli nell'array
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- scrive i simboli
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- cambia il trend flag
               up_down=-1;
              }
           }
        }
      //--- chiude il file
      FileClose(file_handle);
      PrintFormat("I dati vengono scritti, il file %s è chiuso",InpFileName);
     }
   else
      PrintFormat("Fallimento nell'aprire il file %s, Codice errore = %d",InpFileName,GetLastError());
  }

Vedi anche

IntegerToString, StringToInteger, Integer types