我把代码贴出来。
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;
好的,我暂时用循环语句把数组逐项清零,也可以解决问题,不过效率应该会降低。
目前在序列模式下测试确实有点问题。但是在逐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先判断数组大小,而不是直接暴力使用数组下标来访问数组内容