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,         // プロパティ ID
  bool                        common_folder=false // ファイルがローカルフォルダでみられる(false)
  );                                                // または全ての端末の共有フォルダでみられる(true)

パラメータ

file_handle

[in] FileOpen() から戻されたファイル記述子

file_name

[in]  ファイル名

property_id

[in]  ファイルプロパティ識別子値は ENUM_FILE_PROPERTY_INTEGER 列挙のいずれかです。関数の2 番目のバージョンが使用されている場合は以下のプロパティ値のみを受け取ることが出来ます。 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)を発します。

注意事項

この関数は常にエラーコードを変更します。正常に完了した場合はエラーコードが NULL にリセットされます。

例:

//--- スクリプトの起動時に入力パラメータのウィンドウを表示する
#property script_show_inputs
//--- 入力パラメータ
input string InpFileName="data.csv";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
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());
 }

参照

ファイル操作ファイルプロパティ