以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  请问vba中如何遍历ini文件呢?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=51766)

--  作者:vba
--  发布时间:2013/5/7 22:19:49
--  请问vba中如何遍历ini文件呢?

找了一下vba的帮助

GetPrivateProfileFloat 方法

从INI文件中读取浮点数变量

GetPrivateProfileFloat(AppName, KeyName, Default, FileName)

 

这个必须指定具体keyName,但是如果一个AppName下对应多个KeyName时,我不想写死KeyName,因为要用循环的方式动态取得,然后把这一个AppName下的所有值做累加。请问客服老师如何实现呢?


--  作者:guotx2010
--  发布时间:2013/5/8 8:38:47
--  
记录一个数量,然后根据数量来做循环。
如:
[Policy]
PolicyCount=5
Policy0=价量策略
PolicyStatus0=启动
Policy1=缠论-3买3卖
PolicyStatus1=启动
Policy2=布林通道
PolicyStatus2=启动
Policy3=缠论-2买2卖
PolicyStatus3=启动
Policy4=均线策略
PolicyStatus4=启动


--  作者:vba
--  发布时间:2013/5/8 10:25:02
--  

谢谢guotx2010老师,关键我的KeyName是用pel公式名称形成的,ini格式是这样的:

[IF00]

AA=1

YY=1

XX=1

[RB10]

MM=1

NN=1

这个如何循环得到呢?还请老师帮忙!非常感谢!


--  作者:guotx2010
--  发布时间:2013/5/8 20:59:05
--  

把每一个keyname作为一个节的项,如:

[Key]

keycount=n

key1=IF00

key2=RB00

 

然后接你的ini内容

 

这样就可以根据keycount来做循环读取每一个keyname节的项目值了,每一个节的项目名应该一致,aa,mm之类的,不一致的化,也得有一套规则,不然你怎么动态读取不同节的项目呢?

 


--  作者:vba
--  发布时间:2013/5/10 13:02:40
--  

建议vba增加一个ini的外部对象。这样就可以扩展ini文件的读写操作。我看目前有个Registry ,也可以类似做一个。这样Section和key就很好得到,也不用把key的规则搞一致就可以遍历了。