Rss & SiteMap

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

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

标题:建议Document对象增加对全局变量的遍历机制

1楼
guotx2010 发表于:2012/8/21 14:34:08

我经常需要将程序运行过程中的临时变量写到全局变量中,如果每天都不清除这些全局变量,那么就会很混乱,有些变量是需要保留的,而有些是不需要的,这些变量在保存的时候会以当时的账户、合约代码和价格等信息组合而成的变量名称,要删除这些变量的话,最好的方法就是循环读取每一个变量,逐个删除,或者删除具有一定前缀的特定变量。

 

所以建议开发人员对document对象进行功能增强,提供:

1、基于0的索引遍历机制

2、删除某1个全局变量的功能

3、删除某些前缀的全局变量的功能。

4、批量修改某一特征的全局变量的值的功能。

 

2楼
王锋 发表于:2012/8/21 15:13:04

采纳

3楼
guotx2010 发表于:2012/8/21 15:15:03

王锋版主,今天你心情肯定很好吧,我以前都提过的问题,你都没有理我,今天全部采纳。

我也很开心,谢谢你了,我越来越喜欢金字塔了。做的项目一个比一个大了。

4楼
guotx2010 发表于:2012/8/30 23:17:23

2.92果然增加了这些功能,我简单测试了一下,属性中的 ExtDataNumExtDataStringNum可以分别返回数值型和字符型变量的个数

但是不能遍历,每次返回的都是第一个变量。

 

以下是测试代码:

 

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位置的变量,请开发人员测试。

 

[此贴子已经被作者于2012-8-30 23:24:30编辑过]
5楼
王锋 发表于:2012/8/31 11:57:10
已经看到问题,下个升级版会进行修正
6楼
guotx2010 发表于:2012/8/31 12:09:51
谢谢了。期待着
7楼
guotx2010 发表于:2012/9/1 19:17:28

2.93版已经修改了,可以返回正确的数据了,但是还有一个小小问题,那就是删除的时候,得从最后一个开始删除,不然就会间隔一个删除,因为删除第一个以后,后面的提上来了,就不会在下次删除的时候删除。

比如:

a1

a2

a3

a4

a5

a6

这几个全局变量,如果从0 开始删除,删除前三个变量,最后就会剩下a2,a4,a6三个全局变量,不是a4,a5,a6,而从5开始删除,一直删除到3,就可以。

[此贴子已经被作者于2012-9-2 7:12:51编辑过]
8楼
王锋 发表于:2012/9/1 20:09:15
for循环的时候,每删除一个,控制循环变量应该进行自减一操作
9楼
guotx2010 发表于:2012/9/2 7:11:23

是的,这样也可以。

还有,能不能增加一个按照键名部分代码过滤出一个子集来做循环,比如:我有5套策略,都需要用到全局变量,分别以不同的字母开头的,开头分别是TT,GG,FB,RG,HT,每一组下有多个变量,我想对TT进行循环读取、判断,而不需要全部读取(加入全部变量有几百个,循环一次是要耗费较多时间的),这样就可以大大减少循环的次数,提高效率,减少每次循环的时间。

 

 另外,按照键值批量删除的功能能不能增加,比如,批量删除键值为0的所有全局变量。

 

[此贴子已经被作者于2012-9-2 7:22:24编辑过]
10楼
guotx2010 发表于:2012/9/5 8:37:45

这个问题在2.93版中已经处理的很好了,具体的说明和例子程序,大家可以看:http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=11642&authorid=0&page=1&star=8

74楼得专门讲解。

共12 条记录, 每页显示 10 条, 页签: [1] [2]


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