Русский

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

FileReadArray

Читает массивы любых типов, кроме строковых (может быть массив структур, не содержащих строки и динамические массивы), из бинарного файла с текущего положения файлового указателя.

uint  FileReadArray(
   int    file_handle,               // handle файла
   void&  array[],                   // массив для записи
   int    start=0,                   // стартовая позиция для записи в массив
   int    count=WHOLE_ARRAY          // сколько читать
   );

Параметры

file_handle

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

array[]

[out]  Массив, куда данные будут загружены.

start=0

[in]  Стартовая позиция позиция для чтения из массива.

count=WHOLE_ARRAY

[in]  Количество элементов для чтения.

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

Количество прочитанных элементов или 0 в случае ошибки. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). По умолчанию читает весь массив (count=WHOLE_ARRAY).

Примечание

Строковый массив может читаться только из файла типа TXT. При необходимости функция пытается увеличить размер массива.

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

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Структура для хранения данных о ценах                            |
//+------------------------------------------------------------------+
struct prices
  {
   datetime          date; // дата
   double            bid;  // цена бид
   double            ask;  // цена аск
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- массив структуры
   prices arr[];
//--- путь к файлу
   string path=InpDirectoryName+"//"+InpFileName;
//--- откроем файл
   ResetLastError();
   int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- прочитаем все данные из файла в массив
      FileReadArray(file_handle,arr);
      //--- получим размер массива
      int size=ArraySize(arr);
      //--- распечатаем данные из массива
      for(int i=0;i<size;i++)
         Print("Date = ",arr[i].date," Bid = ",arr[i].bid," Ask = ",arr[i].ask);
      Print("Total data = ",size);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      Print("File open failed, error ",GetLastError());
  }

Смотри также

Переменные, FileWriteArray()