Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共7 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:setubound(X,0) 没有清除数组内容

1楼
a141027 发表于:2018/3/12 9:55:22

如题,请见图。

 


图片点击可在新窗口打开查看此主题相关图片如下:20180312_093640_new.png
图片点击可在新窗口打开查看

请问为什么?谢谢。

2楼
a141027 发表于:2018/3/12 10:04:39

我把代码贴出来。

 

variable:test[]=0;

setubound(test,3);
test[1]:=1;
test[2]:=2;
test[3]:=3;
setubound(test,0);
setubound(test,3);
check:valid(test[1]),nodraw,colorwhite;
t1:test[1],nodraw,colorwhite;
t2:test[2],nodraw,colorwhite;
t3:test[3],nodraw,colorwhite;

3楼
gxx978 发表于:2018/3/12 10:16:47
该问题已知晓,后续会提交此问题,抱歉,感谢对金字塔的支持。
4楼
a141027 发表于:2018/3/12 10:33:15

好的,我暂时用循环语句把数组逐项清零,也可以解决问题,不过效率应该会降低。

5楼
无为剑 发表于:2018/3/12 13:05:26

目前在序列模式下测试确实有点问题。但是在逐K线模式下测试是没有问题的。

请空数组并不能真正从内存除去,为了减小内存碎片,数组存放的内存是不会随意改变的,只是告知数组管理模块这个数组已经被清空,此时数组的下标已经被置为0,好为后面的数组插入做准备。

 

variable:test[]=0;

setubound(test,3);
test[1]:=1;
test[2]:=2;
test[3]:=3;
setubound(test,0);

dd:UBOUND(test),nodraw;

 

在逐K线模式下,通过打印dd变量你就能看出数组的下标已经被清空了,从编程的合理性角度考虑,数组使用前你应该使用UBOUND先判断数组大小,而不是直接暴力使用数组下标来访问数组内容

6楼
无为剑 发表于:2018/3/12 13:25:08
下个版本我们会增加一个数组初始化函数来解决你遇到的问题
7楼
a141027 发表于:2018/3/12 15:09:56
 谢谢回复。那真的需要一个初始化数组的函数,否则每次都要逐个数组重新写零,效率就太低了。
共7 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.04297 s, 2 queries.