FileReadArray

string 以外の任意型のBIN 型配列(文字列を含まない構造体の配列、動的配列)のファイルから読み込みを行います。

uint  FileReadArray(
  int    file_handle,              // ファイルハンドル
  void&  array[],                  // 記録するための配列
  int    start=0,                  // 配列の書き初めの位置
  int    count=WHOLE_ARRAY         // 読みのカウント
  );

パラメータ

file_handle

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

array[]

[out] データが読み込まれる配列

start=0

[in]  配列に書く開始位置

count=WHOLE_ARRAY

[in]  読まれる要素数。デフォルトでは配列全体が読まれます(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; // 買値
 };
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
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