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