我经常需要将程序运行过程中的临时变量写到全局变量中,如果每天都不清除这些全局变量,那么就会很混乱,有些变量是需要保留的,而有些是不需要的,这些变量在保存的时候会以当时的账户、合约代码和价格等信息组合而成的变量名称,要删除这些变量的话,最好的方法就是循环读取每一个变量,逐个删除,或者删除具有一定前缀的特定变量。
所以建议开发人员对document对象进行功能增强,提供:
1、基于0的索引遍历机制
2、删除某1个全局变量的功能
3、删除某些前缀的全局变量的功能。
4、批量修改某一特征的全局变量的值的功能。
采纳
王锋版主,今天你心情肯定很好吧,我以前都提过的问题,你都没有理我,今天全部采纳。
我也很开心,谢谢你了,我越来越喜欢金字塔了。做的项目一个比一个大了。
2.92果然增加了这些功能,我简单测试了一下,属性中的 ExtDataNum、ExtDataStringNum可以分别返回数值型和字符型变量的个数,
但是不能遍历,每次返回的都是第一个变量。
以下是测试代码:
sub testglobal()
dim KeyName
iCount1=Document.ExtDataNum()
application.MsgOut cdate(time)&",iCount1:"&iCount1
for i=0 to iCount1-1
Result = Document.GetExtDataByIndex(i,KeyName)
KeyValue=document.GetExtData(KeyName)
application.MsgOut "KeyName:"&KeyName &",KeyValue:"&KeyValue
next
iCount2=Document.ExtDataStringNum()
application.MsgOut cdate(time)&",iCount2:"&iCount2
for i=0 to iCount2-1
Result = Document.GetExtStringByIndex(i,KeyName)
KeyValue=document.GetExtString(KeyName)
application.MsgOut "KeyName:"&KeyName &",KeyValue:"&KeyValue
next
end sub
而删除指定索引位置的变量的方法RemoveExtData不能删除,RemoveExtString只能删除索引为0位置的变量,请开发人员测试。
2.93版已经修改了,可以返回正确的数据了,但是还有一个小小问题,那就是删除的时候,得从最后一个开始删除,不然就会间隔一个删除,因为删除第一个以后,后面的提上来了,就不会在下次删除的时候删除。
比如:
a1
a2
a3
a4
a5
a6
这几个全局变量,如果从0 开始删除,删除前三个变量,最后就会剩下a2,a4,a6三个全局变量,不是a4,a5,a6,而从5开始删除,一直删除到3,就可以。
是的,这样也可以。
还有,能不能增加一个按照键名部分代码过滤出一个子集来做循环,比如:我有5套策略,都需要用到全局变量,分别以不同的字母开头的,开头分别是TT,GG,FB,RG,HT,每一组下有多个变量,我想对TT进行循环读取、判断,而不需要全部读取(加入全部变量有几百个,循环一次是要耗费较多时间的),这样就可以大大减少循环的次数,提高效率,减少每次循环的时间。
另外,按照键值批量删除的功能能不能增加,比如,批量删除键值为0的所有全局变量。
这个问题在2.93版中已经处理的很好了,具体的说明和例子程序,大家可以看:http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=11642&authorid=0&page=1&star=8
74楼得专门讲解。