FileReadArray

从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