Русский

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

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

FileFlush

Сброс на диск всех данных, оставшихся в файловом буфере ввода-вывода.

void  FileFlush(
   int  file_handle      // handle файла
   );

Параметры

file_handle

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

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

Нет возвращаемого значения.

Примечание

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

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

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

Пример:

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- имя файла для записи
input string InpFileName="example.csv"// имя файла
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- откроем файл
   int file_handle=FileOpen(InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- запишем данные в файл
      for(int i=0;i<1000;i++)
        {
         //--- вызовем функцию записи
         FileWrite(file_handle,TimeCurrent(),SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoDouble(Symbol(),SYMBOL_ASK));
         //--- сбрасываем данные на диск на каждой 128 итерации
         if((i & 127)==127)
           {
            //--- теперь данные будут находиться в файле, и при критической ошибке терминала мы их не потеряем
            FileFlush(file_handle);
            PrintFormat("i = %d, OK",i);
           }
         //--- задержка в 0.01 секунды
         Sleep(10);
        }
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      PrintFormat("Ошибка, код = %d",GetLastError());
  }

Смотри также

FileClose()