A:
用户可通过函数sendrunningdata返回任意窗口,与return 返回有所区别,具体表现如下:
1、Return是结束当前函数后返回变量结果,而sendrunningdata只是返回变量结果,无结束程序的功能。
2、Return的结果受当前设置的精度影响(即PN_Precision()),而sendrunningdata不受此影响,返回的总是原始精度的数值,若需要保留精度,得提前对数据进行处理后返回。
3、函数只能return 一个数据,而sendrunningdata可以返回任意个变量数据。
sendrunningdata函数说明:
定义:SendRunningData(Data:Any,NWdow:string):any
说明:程序中将变量的值返回到客户端窗口
参数:
Data:任意类型数据,可以是实数,表格,图型等任意数据类型。
NWdow:字符串,窗口名称,可不给,则默认函数结果集窗口,若重名,则会覆盖。
返回:窗口中返回变量的值
应用范例:实时监控中展示选定股票的盘中信息,及市场指数的盘中数据,分两个窗口
//实时返回选定股票的盘中信息
//股票
stocks:=array("SH600000","SH600004","SH600009","SH600010","SH600011","SH600015",
"SH600016","SH600018","SH600019");
//指数
indexs:=array("SH000001","SH000016","SH000300","SH000905","SH000852");
T0:=strtotime('15:01:00'); //收盘时间点
Arr1:=select thisrow as '代码',stockname(thisrow) as '名称' from stocks end;
Arr2:=select thisrow as '代码',stockname(thisrow) as '名称' from stocks end;
//盘中取数
while timeof(now())<T0 do
begin
for i:=0 to length(Arr1)-1 do
begin
setsysparam(pn_stock(),Arr1[i]['代码']);
Arr1[i,'当前价']:=rd(6);
Arr1[i,'5分钟涨幅(%)']:=rd(9);
Arr1[i,'当前成交金额']:=rd(7);
end
sendrunningdata(Arr1,'盘口-股票');//窗口1
for i:=0 to length(Arr2)-1 do
begin
setsysparam(pn_stock(),Arr2[i]['代码']);
Arr2[i,'当前价']:=FloatN(rd(6),2); //保留2位小数
Arr2[i,'5分钟涨幅(%)']:=FloatN(rd(9),2);
Arr2[i,'当前成交金额']:=FloatN(rd(7),2);
end
sendrunningdata(Arr2,'盘口-市场'); //窗口2
sleep(5*1000); //5秒刷一次
end
return '非交易时间段';
窗口展示:
窗口一:盘口-股票
窗口二:盘口-市场 相对于上一个窗口有处理数据小数精度