以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  请教:类调用的问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=2237)

--  作者:volersky
--  发布时间:2010/7/24 21:46:19
--  [求助]希望帮忙做个交易记录复盘导入的指标。
新建一个类mtest:
Public mystr

新建框架Frame1:
Dim x,Grid
Sub Frame1_Initialize()
Set x=New mtest
x.myStr="hello"
End Sub



Sub Frame1_Paint()
Set Grid=Frame1.ActiveGrid
Grid.DrawText 100,100,x.myStr,rgb(255,0,0)
End Sub

问题:我另有一个自写的框架,如果我把另一个注释掉,这个能成功运行 如果另一个不注释掉,这个运行后显示"hello"后程序卡死。
这里面所有的变量除Grid外都不重名。
而且我发现如果有两个框架代码都不少的情况下,运行时会交叉。
我在A框架采用的是类对象实现,在B框架里是过程与函数实现,但单独调用B框架时,B框架会莫名其妙调用A框架的输出内容,按理说我框架内采用Dim定义的变量作用域应该在框架内生效,怎么会交叉呢?
当框架A与框架B同时存在时,调用其中任何一个框架,再切换另一个后,刚才始是正常的,运行一段时间(或长或短),再次进行切换,框架的Paint函数失效,不输出任何内容,然后点停止运行vbs,程序卡死。我试了四五次都这样

一些操作上的说明与猜想:
只是把B框架里所有的过程变量封装成一个类,然后在A框架内用对象的方式来执行,删除任何一个后或从未切换框架时,都能正常稳定运行。
A框架的类是在application.start里进行初始化的
当我A框架与B框架的表是一样的时候,在A框架注释掉所有的内容后,用A框架的表切换框架的品种,会自动切换到B框架,所有的分组均设为1,表于A框架设计之前在B框架内先行设计的(表只是复制了默认表,然后仅删除了名称一项)。
如果在A框架内不使用在表切换品种方式进行切换,A框架运行正常。
如果A框架与B框架同时生效,这时候就A框架内调用表就发生了上述问题,但我感觉这种切换后,是同时执行了A和B框架,以至于我认为是交叉输出。因为我的A框架与B框架唯一不同的,是多了一行输出文字。 br/> 版本号:1.983。br/>
不好意思,我用的谷歌浏览器,没办法看见代码与设计模式,排版很混乱,下次我换一个能看见代码模式与设计模式。
[此贴子已经被作者于2010-7-24 22:15:23编辑过]

--  作者:admin
--  发布时间:2010/7/25 16:29:09
--  

问题提的很好,这个问题金字塔没有进行特别说明。

金字塔目前兼容的是VBS语法,不是OFFICE 的VBA,所以除了类模块外,所有的对象模块的数据都是公用的,框架模块之所以独立是因为方便用户编辑和管理,实际运行代码是合在一起的。


--  作者:volersky
--  发布时间:2010/7/25 19:10:13
--  

你的意思是,无论我写了多少个框架,最终无论我现在看的是哪个框架,他们都同时执行了,这些包括框架、类模块、标准模块等等所有的代码?

 


--  作者:admin
--  发布时间:2010/7/26 1:23:59
--  求助实现指定持仓品种持仓周期

是的,可以这么理解


--  作者:volersky
--  发布时间:2010/7/26 8:26:05
--  

多谢