FileRead

Чтение данных из файла любого типа.

uint FileRead(
 int file_handle, // handle файла
 ... // список параметров для чтения
 );

Параметры

file_handle

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

...

[in] Список параметров, разделенных запятыми, для чтения из файла. Каждый параметр передаётся по ссылке. Количество параметров не должно превышать 256. Переменные должны быть базовых типов, массивы, структуры, матрицы и векторы не допускаются.

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

Количество прочитанных переменных. Если прочитано меньше переменных, чем предполагалось, то ошибку чтения можно проанализировать при помощи GetLastError(). Если в процессе чтения из CSV-файла встречается конец строки, то чтение прерывается, но ошибка не взводится.

Примечание

Функция FileRead зеркальна функции FileWrite. Функция универсальна и производит чтение из файлов любого типа - CSV, TXT или BIN.

Функция FileRead не может читать из бинарного файла данные типа string, так как длина читаемой строки заранее неизвестна.

При чтении из бинарного файла в каждую переменную вычитывается то количество байт, которое соответствует типу данных (char - 1, int - 4, long - 8, double - 8, etc).

При чтении из текстового файла в переменную типа string читается вся строка до конца, без завершающих символов конца строки.

При чтении из CSV-файла сначала вычитываются строки с текстовым форматом представления соответствующего типа, затем строка конвертируется в переменную соответствующего типа (для примера смотри FileReadNumber, FileReadBool, FileReadDateTime).

Пример:

//+------------------------------------------------------------------+
//|                                                 TestFileRead.mq5 |
//|                                  Copyright 2026, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   uint     written,read;
//--- 13 переменных разных типов
   bool     bool_value=true;
   char     char_value=123;
   short    short_value=12345;  
   int      int_value=1234567;
   long     long_value=5000000000;
   float    float_value=FLT_EPSILON;
   double   double_value=M_PI;
   color    color1_value=clrAquamarine;
   color    color2_value=C'111,0,222';
   datetime datetime_value=TimeCurrent();
   complex  complex_value=1.1+0.1i;
   complexf complexf_value=5.5+0.5i;
   string   string_value="the quick brown fox jumps over the lazy dog";
//--- откроем csv-файл на запись
   int file_handle=FileOpen("test.csv",FILE_CSV|FILE_WRITE|FILE_ANSI);
//--- записываем 13 переменных разных типов
   written=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   bool_value=false;
   char_value=124;
   short_value=12347;  
   int_value=1234569;
   long_value=5001000000;
//--- записываем 13 переменных во вторую строку csv-файла
   written+=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   bool_value=false;
   char_value=125;
   short_value=12349;  
   int_value=1234571;
   long_value=5002000000;
//--- записываем 13 переменных в третью строку csv-файла
   written+=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   FileClose(file_handle);
   Print(written," bytes written");
   bool     bool_value2;
   char     char_value2;
   short    short_value2;  
   int      int_value2;
   long     long_value2;
   float    float_value2;
   double   double_value2;
   color    color1_value2;
   color    color2_value2;
   datetime datetime_value2;
   complex  complex_value2;
   complexf complexf_value2;
   string   string_value2;
   string   string2_value="untouched string";
//--- откроем записанный csv-файл на чтение
   file_handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI);
//--- попробуем прочитать на 1 переменную больше, чем есть в строке
   read=FileRead(file_handle,bool_value2,char_value2,short_value2,int_value2,long_value2,float_value2,double_value2,color1_value2,color2_value2,datetime_value2,string_value2,complex_value2,complexf_value2,string2_value);
   FileClose(file_handle);
   Print("read ",read," variables");
   Print(bool_value2," ",char_value2," ",short_value2," ",int_value2," ",long_value2," ",float_value2," ",double_value2," ",color1_value2," ",color2_value2," ",datetime_value2," ",string_value2," ",complex_value2," ",complexf_value2," ",string2_value);
   string txt_line1,txt_line2,txt_line3;
//--- откроем записанный файл как текстовый
   file_handle=FileOpen("test.csv",FILE_TXT|FILE_READ|FILE_ANSI);
//--- прочитаем 3 строки из текстового файла
   read=FileRead(file_handle,txt_line1,txt_line2,txt_line3);
   Print("\nread ",read," lines");
   FileClose(file_handle);
//--- визуально убедимся, что это именно те строки, которые были записаны
   Print(txt_line1);
   Print(txt_line2);
   Print(txt_line3);
//--- откроем бинарный файл на запись
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_WRITE);
//--- записываем 12 переменных разных типов, кроме string
   written=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,complex_value,complexf_value);
   FileClose(file_handle);
   Print("");
   Print(written," bytes written");
   bool     bool_value3;
   char     char_value3;
   short    short_value3;  
   int      int_value3;
   long     long_value3;
   float    float_value3;
   double   double_value3;
   color    color1_value3;
   color    color3_value3;
   datetime datetime_value3;
   complex  complex_value3;
   complexf complexf_value3;
//--- откроем записанный бинарный файл на чтение
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_READ);
//--- читаем 12 переменных того же типа
   read=FileRead(file_handle,bool_value3,char_value3,short_value3,int_value3,long_value3,float_value3,double_value3,color1_value3,color3_value3,datetime_value3,complex_value3,complexf_value3);
   FileClose(file_handle);
   Print("read ",read," variables");
//--- визуально убедимся в правильности чтения
   Print(bool_value3," ",char_value3," ",short_value3," ",int_value3," ",long_value3," ",float_value3," ",double_value3," ",color1_value3," ",color3_value3," ",datetime_value3," ",complex_value3," ",complexf_value3);
  }

Вывод в журнал экспертов

554 bytes written
read 13 variables
true 123 12345 1234567 5000000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5) untouched string
 
read 3 lines
true 123 12345 1234567 5000000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
false 124 12347 1234569 5001000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
false 125 12349 1234571 5002000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
 
68 bytes written
read 12 variables
false 125 12349 1234571 5002000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 (1.1,0.1) (5.5,0.5)

Смотри также

FileWrite, FileReadNumber, FileReadBool, FileReadDateTime