【MQL4定数】ファイルのシーク位置定数(ENUM_FILE_POSITION)

【辞書】MQLリファレンス

ファイルのシーク位置定数(ENUM_FILE_POSITION)

ファイルのシーク位置定数(ENUM_FILE_POSITION)は、ファイルのどこからどこまでを読み込むのかを、設定するための定数です。

例えば、ファイルのヘッダー部分を読み飛ばすために、「ファイルの先頭から100文字までは無視する」という設定が可能です。

ファイルのシーク位置定数を使うには、以下の関数を使います。

  • FileSeek関数:ファイルのシーク位置を設定する関数

ファイルのシーク位置定数(ENUM_FILE_POSITION)

定数説明
SEEK_SETファイルの先頭
SEEK_CUR現在のファイルのシーク位置
SEEK_ENDファイルの最後

ファイルのシーク位置定数の使い方

主に、FileSeek関数で使用されます。

FileSeek関数の第3引数(origin)として、ファイルのシーク位置定数が使用されます。

例えば、以下のように使用します。

void OnInit()
  {
   //ファイルパスを指定
   string path = "folder/data.csv";

   //ファイルを読み込み可能・CSV形式で読み込む
   int handle = FileOpen(path,FILE_READ|FILE_CSV);
   
   //ファイルの読み込みエラーチェック
   if(handle != INVALID_HANDLE)
     {
      //文字列番号をランダムに選ぶ
      ulong ind=MathRand()%size;

      //位置を文字列の始めにシフトする
      if(FileSeek(handle,ind,SEEK_SET)==true)
         {
          //ind 番号で文字列を読んで出力する
          PrintFormat("String text with %d number: \"%s\"",ind,FileReadString(handle));
         }

      //ファイルを閉じる
      FileClose(handle);
     }
   }

【補足】ファイルのシーク位置定数の列挙型(ENUM_FILE_POSITION)

ファイルのシーク位置定数は、ENUM_FILE_POSITION​という列挙型に含まれています。

列挙型は、定数群をひとまとめにしたものです。

以下のように使います。

ENUM_FILE_POSITION filePosition = SEEK_SET;

上記のようにプログラムすると、filePosition変数に SEEK_SETの値が代入されます。