以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- pel中数组的使用 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=156978) |
-- 作者:linxingywei -- 发布时间:2017/8/17 16:14:55 -- pel中数组的使用 请问pel中用variable定义了数组, variable:A1[10]=0 , 在使用中可以调整数组的大小(元素个数),或者该数组赋值后有没有语句能再把数组的元素值全都置为0 吗? |
-- 作者:gxx978 -- 发布时间:2017/8/17 16:27:17 -- 参考函数SETUBOUND。 |
-- 作者:FireScript -- 发布时间:2017/8/17 16:30:02 -- 如果你定义数组的时候不指定长度,就可以动态扩充数组大小的。楼上那个要注意设置的长度小于当前数组长度的问题。 |
-- 作者:linxingywei -- 发布时间:2017/8/17 16:46:23 -- 请问定义数组的时候不指定长度,是这样设定吗?variable:A1[] 动态扩充数组大小,是用SETUBOUND函数吗? 如果设置的长度小于当前数组长度,会有什么问题?
|
-- 作者:FireScript -- 发布时间:2017/8/17 17:29:02 -- 以下是引用linxingywei在2017/8/17 16:46:23的发言:
请问定义数组的时候不指定长度,是这样设定吗?variable:A1[] 动态扩充数组大小,是用SETUBOUND函数吗?
如果设置的长度小于当前数组长度,会有什么问题? 3楼回复错了。 VARIABLE:t[10]=0;//或者VARIABLE:t[]=0
上面的代码,就是动态填充的例子。新的元素会不断填充到数值后面。不断扩充数组大小。SETUBOUND的话,如果你现在数组长度是100,你设置成50,你数组就有一半的数据被砍掉了。 |
-- 作者:linxingywei -- 发布时间:2017/8/17 17:38:01 -- 我看SETUBOUND的函数说明, 使用SETUBOUND(x,0),可以使清空数组,但是我用了下,发现这种写法并不能清空数组,之前对数组的赋值,还是保留。
|
-- 作者:FireScript -- 发布时间:2017/8/18 9:17:18 -- 以下是引用linxingywei在2017/8/17 17:38:01的发言:
我看SETUBOUND的函数说明, 使用SETUBOUND(x,0),可以使清空数组,但是我用了下,发现这种写法并不能清空数组,之前对数组的赋值,还是保留。 我看下你代码怎么写的。 VARIABLE:t[]=0;
我测试了可以的啊。 |
-- 作者:linxingywei -- 发布时间:2017/8/18 15:09:57 -- 但是我测试下来,清空没有作用。 VARIABLE:t[]=0; if open>close then t:=open-close; a:UBOUND(t); a1:t[1]; if a>100 then SETUBOUND(t,0); s:UBOUND(t); s1:t[1]; SETUBOUND(t,20); s2:t[1]; 显示的结果: 如果SETUBOUND(t,0), 是把数组清空的话,s 应该显示 0 ,但是显示的和a的值是一样的。 a1和s1取的数组第一个元素值也是相同的。
|
-- 作者:FireScript -- 发布时间:2017/8/18 15:33:41 -- 以下是引用linxingywei在2017/8/18 15:09:57的发言:
但是我测试下来,清空没有作用。 VARIABLE:t[]=0;
if open>close then t:=open-close;
a:UBOUND(t);
a1:t[1];
if a>100 then SETUBOUND(t,0);
s:UBOUND(t);
s1:t[1];
SETUBOUND(t,20);
s2:t[1]; 显示的结果:
如果SETUBOUND(t,0), 是把数组清空的话,s 应该显示 0 ,但是显示的和a的值是一样的。
a1和s1取的数组第一个元素值也是相同的。 1.我按照你的代码测试,a无法大于100(你那上边是825)。每次扩充数据就报错,数组报“越界错误”,这说明清空是成功的。这个应该是这样的:在数据较小的情况下,阴线数目达不到100,但是一旦扩充数据。就能触发清空操作,然后t[1]这种语句就会报错。 2.你那边是不是用了序列模式?只有序列模式才会这样,其中细节我再测试下。我研先究下序列模式下数组的操作问题。回头在这个帖子我会继续回复的。 |