FileLoad

指定されたバイナリファイルのすべてのデータを渡された数値型または単純な構造体型の配列に読み込みます。この関数を使用すると、既知の型のデータをすぐに適切な配列に読み取ることができます。

long  FileLoad(
  const string file_name,        // ファイル名
  void&        buffer[],          // 数値型または単純な構造体型の配列
  int          common_flag=0     // ファイルフラグ、デフォルトでは <data_folder>\MQL5\Files\ で検索される
  );

パラメータ

file_name

[in]  含まれるデータが読まれるファイル名。

buffer

[out]  数値型または単純な構造体型の配列。

common_flag=0

[in]  操作モードを示すファイルフラグ。このパラメータが指定されていない場合、ファイルは MQL5\Files サブフォルダ(または検証の場合 <testing_agent_directory>\MQL5\Files )で検索されます。

戻り値

読み取られた要素数。エラーの場合は-1。

注意事項

FileLoad()関数は、ファイルから配列の要素サイズの倍数のバイト数を読み取ります。ファイルサイズが10 バイトで関数がdouble(sizeof(double)=8)型の配列にデータを読み込むとします。この場合、FileLoad()は8バイトのみを読んでファイルの終わりに残る2バイトを無視して、(1要素が読み込まれたため)1を戻します。

例:

//+------------------------------------------------------------------+
//|                                                Demo_FileLoad.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//--- 入力パラメータ
input int     bars_to_save=10; // バー数
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
  string  filename=_Symbol+"_rates.bin";
  MqlRates rates[];
//---
  int copied=CopyRates(_Symbol,_Period,0,bars_to_save,rates);
  if(copied!=-1)
    {
    PrintFormat(" CopyRates(%s) copied %d bars",_Symbol,copied);
    //---  相場をファイルに書く
    if(!FileSave(filename,rates,FILE_COMMON))
        PrintFormat("FileSave() failed, error=%d",GetLastError());
    }
  else
    PrintFormat("Failed CopyRates(%s), error=",_Symbol,GetLastError());
//--- 相場をファイルに読み返す
  ArrayFree(rates);
  long count=FileLoad(filename,rates,FILE_COMMON);
  if(count!=-1)
    {
    Print("Time\tOpen\tHigh\tLow\tClose\tTick Voulme\tSpread\tReal Volume");
    for(int i=0;i<count;i++)
       {
        PrintFormat("%s\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u",
                    TimeToString(rates[i].time,TIME_DATE|TIME_SECONDS),
                    rates[i].open,rates[i].high,rates[i].low,rates[i].close,
                    rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
       }
    }
 }

参照

構造体とクラスFileReadArrayFileReadStruct, FileSave