A:可以通过指定写出模型WriteFile的pos参数为-1,设置为追加模式实现。
函数说明可参考:FAQ:
WriteFile
如实现一个追加模式写入到本地txt文件中的过程:
txtF:="E:\\test\\rdData.txt";
s:="AAA,2025-05-12 14:45:00,2.18";
ret:=Rdo2 WriteFile(rwRaw(),'',txtF,-1,Length(s),s);
if ret=1 then
return '导出成功';
else return Ret; //导出失败
应用示例:盘中实时写入展示
txtF:="E:\\test\\rdData.txt"; //导出文件
stocks:=array("SZ000002","SH600000");
pstr:="|";//分割符
//文件初始化-导出表头---若不需要记录表头的,这段可省
hStr:=array2str(array("StockID","Date","price","amount","macd"),pstr)+"\r\n";//表头-预计导出的列,方便解析
ret:=Rdo2 WriteFile(rwRaw(),'',txtF,-1,Length(hStr),hStr);//此导出为追加模式
echo "表头写出:",ret; //1则表示写出成功
//实时计算并写出
while timeof(now())>9.5/24 and timeof(now())<15/24 do
begin
t:=array();
for i,stockid in stocks do
begin
setsysparam(pn_stock(),stockid);
t[i,"StockID"]:=stockid;
t[i,"Date"]:=datetimetostr(rd(-1));
t[i,"price"]:=rd(6);
t[i,"amount"]:=rd(7);
t[i,"macd"]:=floatn(MACD_MACD_v(12,26,9),6); //保留六位小数
end;
//-数组转成串
datastr:='';
for i,d in t do datastr+=array2str(d,pstr)+"\r\n";
ret:=Rdo2 WriteFile(rwRaw(),'',txtF,-1,Length(datastr),datastr);//此导出为追加模式
echo "实时写出:",ret;
sleep(10*1000);//等待10秒
end;
return "运行结束";
写出效果:
后续文本内容读取并解析:
txtF:="E:\\test\\rdData.txt"; //导出文件
ret:=Rdo2 ReadFile(rwRaw(),'',txtF,0,100000,datastr);
//解析串datastr
data:= str2array(datastr,"\r\n") minus array('');
data::=str2array(mcell,"|");
//列名处理
t:=data[1:];
reIndex(t,nil,data[0]);
//字符转数字
t[:,array("price","amount","macd")]::=StrToFloat(mcell);
return t;
效果如下:
