FileReadArray
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());
}