Русский

Справочник MQL4 Файловые операции FileReadFloat

Справка MQL4 одним файлом:

FileReadFloat

Читает число одинарной точности с плавающей точкой (float) из текущей позиции бинарного файла.

float  FileReadFloat(
   int  file_handle      // handle файла
   );

Параметры

file_handle

[in]  Файловый описатель, возвращаемый функциейFileOpen().

Возвращаемое значение

Значение типа float.

Примечание

Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Пример (используется файл, полученный в результате работы примера для функции FileWriteFloat())

//+------------------------------------------------------------------+
//|                                           Demo_FileReadFloat.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- параметры для чтения данных
input string InpFileName="Close.bin"// имя файла
input string InpDirectoryName="Data"// имя директории
//--- глобальные переменные
int      size=0;
double   close_buff[];
datetime time_buff[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- откроем файл
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для чтения",InpFileName);
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- прочитаем данные из файла
      while(!FileIsEnding(file_handle))
        {
         size++;
         //--- проверка размера массивов
         if(size>ArraySize(time_buff)) ArrayResize(time_buff,size,100);
         if(size>ArraySize(close_buff)) ArrayResize(close_buff,size,100);
         //--- считываем значение времени и цены
         time_buff[size-1]=(datetime)FileReadDouble(file_handle);
         close_buff[size-1]=(double)FileReadFloat(file_handle);
        }
      //--- закроем файл
      FileClose(file_handle);
      PrintFormat("Данные прочитаны, файл %s закрыт",InpFileName);
      //--- проверка размеров массивов
      if(ArraySize(time_buff)==ArraySize(close_buff))
        {
         //--- вывод прочитанных данных
         PrintFormat("Read data:%d",ArraySize(time_buff));
         for(int i=0; i<ArraySize(time_buff); i++) PrintFormat("%d, time=%s, close price=%s",i,TimeToString(time_buff[i]),DoubleToString(close_buff[i],_Digits));
        }
      else
         Print("Ошибка в данных.");
     }
   else
     {
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
      return;
     }
  }

Смотри также

Вещественные типы (double, float), FileReadDouble(), FileWriteFloat()