Скачать MetaTrader 5

FileGetInteger

Получает целочисленное свойство файла. Существует 2 варианта функции.

1. Получение свойств по хэндлу файла.

long  FileGetInteger(
   int                         file_handle,   // хэндл файла
   ENUM_FILE_PROPERTY_INTEGER  property_id    // идентификатор свойства
   );

2. Получение свойств по имени файла.

long  FileGetInteger(
   const string                file_name,            // имя файла
   ENUM_FILE_PROPERTY_INTEGER  property_id,          // идентификатор свойства
   bool                        common_folder=false   // файл просматривается в локальной папке (false)
   );                                                // или в общей папке всех терминалов (true)

Параметры

file_handle

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

file_name

[in]  Имя файла.

property_id

[in]  Идентификатор свойства файла. Значение может быть одним из значений перечисления ENUM_FILE_PROPERTY_INTEGER. Если используется второй вариант функции, то можно получать значения только следующих свойств: FILE_EXISTS, FILE_CREATE_DATE, FILE_MODIFY_DATE, FILE_ACCESS_DATE и FILE_SIZE.

common_folder=false

[in]  Указывает на местоположение файла. Если параметр равен false, то просматривается каталог данных терминала, в противном случае предполагается, что файл находится в общей папке всех клиентских терминалов \Terminal\Common\Files (FILE_COMMON).

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

Значение свойства. В случае ошибки функция возвращает -1, для получения кода ошибки необходимо вызвать функцию GetLastError().

Если при получении свойств по имени будет указан каталог, то функция в любом случае выставит ошибку 5018 (ERR_MQL_FILE_IS_DIRECTORY), при этом возвращаемое значение будет корректным.

Примечание

Функция всегда изменяет код ошибки. При успешном завершении код ошибки сбрасывается в ноль.

Пример:

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры
input string InpFileName="data.csv";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string path=InpDirectoryName+"//"+InpFileName;
   long   l=0;
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_CSV);
   if(handle!=INVALID_HANDLE)
     {
      //--- распечатаем всю информацию о файле
      Print(InpFileName," file info:");
      FileInfo(handle,FILE_EXISTS,l,"bool");
      FileInfo(handle,FILE_CREATE_DATE,l,"date");
      FileInfo(handle,FILE_MODIFY_DATE,l,"date");
      FileInfo(handle,FILE_ACCESS_DATE,l,"date");
      FileInfo(handle,FILE_SIZE,l,"other");
      FileInfo(handle,FILE_POSITION,l,"other");
      FileInfo(handle,FILE_END,l,"bool");
      FileInfo(handle,FILE_IS_COMMON,l,"bool");
      FileInfo(handle,FILE_IS_TEXT,l,"bool");
      FileInfo(handle,FILE_IS_BINARY,l,"bool");
      FileInfo(handle,FILE_IS_CSV,l,"bool");
      FileInfo(handle,FILE_IS_ANSI,l,"bool");
      FileInfo(handle,FILE_IS_READABLE,l,"bool");
      FileInfo(handle,FILE_IS_WRITABLE,l,"bool");
      //--- закроем файл
      FileClose(handle);
     }
   else
      PrintFormat("%s file is not opened, ErrorCode = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+
//| Отображение значения свойства файла                              |
//+------------------------------------------------------------------+
void FileInfo(const int handle,const ENUM_FILE_PROPERTY_INTEGER id,
              long l,const string type)
  {
//--- получим значение свойства
   ResetLastError();
   if((l=FileGetInteger(handle,id))!=-1)
     {
      //--- значение получено, отобразим его в правильном формате
      if(!StringCompare(type,"bool"))
         Print(EnumToString(id)," = ",l ? "true" : "false");
      if(!StringCompare(type,"date"))
         Print(EnumToString(id)," = ",(datetime)l);
      if(!StringCompare(type,"other"))
         Print(EnumToString(id)," = ",l);
     }
   else
      Print("Error, Code = ",GetLastError());
  }

Смотри также

Файловые операции, Свойства файлов