FileLoad

指定二进制文件的所有数据读入数值类型或简单结构的传递数组。该函数允许您快速的将已知类型的数据读入相应的数组。

long  FileLoad(

   const string  file_name,         // 文件名

   void&         buffer[],          // 数值类型或简单结构的数组

   int           common_flag=0      // 在<data_folder>\MQL5\Files\ by default中搜索的文件标识

   );

参数

file_name

[in]  阅读数据的文件名称。

buffer

[out]  数值类型或 简单结构数组。

common_flag=0

[in]  指示操作模式的文件标识。如果没有指定参数,文件将在子文件夹MQL5\Files被搜索(或测试时在<testing_agent_directory>\MQL5\Files)。

返回值

读取的元素数量或错误时为 -1。

注意

FileLoad()从文件读取数组大小几倍的字节数。假设文件大小为10字节,函数将数据读入双精度类型数组(sizeof(double)=8)。在这种情况下,函数只能读入8个字节,在文件结尾剩下的2个字节将被删除,函数FileLoad()将返回1 (1个元素阅读)。

例如:

//+------------------------------------------------------------------+

//|                                                Demo_FileLoad.mq5 |

//|                        Copyright 2016, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2016, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property copyright "Copyright 2016, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property script_show_inputs

//--- 输入参数

input int      bars_to_save=10; // Number of bars

//+------------------------------------------------------------------+

//| 脚本程序起始函数                                    |

//+------------------------------------------------------------------+

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);

        }

     }

  }

另见

Structures and ClassesFileReadArrayFileReadStruct, FileSave