以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 高级功能研发区 (http://222.73.7.161/bbs/list.asp?boardid=5) ---- VB自定义函数问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=140483) |
-- 作者:timescale -- 发布时间:2016/10/10 9:48:35 -- VB自定义函数问题 1.软件的示例 DefaultProject--模块--Function下第一个例子 Function TriangleShape(Formula,Cyc,SCyc,ECyc)每次打开管理面板--高级 都报 编译错误--1002.我仔细检查过似乎没有语法错误,即使把函数体移除,只保留一个空壳还是同样报错。如图
2.示例函数 CU_MA1和CU_MA2,我编入指标公式,测试正常,但在技术分析界面始终显示为0. 在VB中用MsgBox 显示从金字塔中读取数据正常,如图
请问是哪里出问题呢?谢谢 |
-- 作者:yukizzc -- 发布时间:2016/10/10 13:55:33 -- TriangleShape这个函数你自己胡乱修改他源代码了,原始代码是这样的。 Function TriangleShape(Formula,Cyc,SCyc,ECyc) \' \'msgbox cyc & "-" & scyc & "-" & ecyc \' \'该函数计算当前位置图形是否是三角形突破,如果是则返回1,否则返回0。该函数只有在选股时才能使用。 \' TriangleShape=0 \' \' \'如果是分时数据或者分笔成交那么直接返回 \' If Formula.ParentGrid.DataType = 0 or Formula.ParentGrid.CycType = 10 Then \' Exit Function \' End If vba启动了没,切换品种试试呢,另外直接在函数里把返回值强制返回一个比如10再看看。 |
-- 作者:timescale -- 发布时间:2016/10/10 16:46:51 -- 1.第一个问题,我那个改动是故意的,就是看看没有函数主题的时候是否报错,结果当然是报错。我把程序重装一遍,保证没有改动,还是这样。不过我估计问题是这样:我的系统是64位,不小心装了32位的金字塔,现在改为64位,出现新问题:进入调试,提示“你必须安装windows脚本调试补丁....”“已成功安装....”,重启机器,再来,还是同样的问题。请指教该如何做?
2.安装64位后,自定义函数可以用了,显示的效果和预期的一样! |
-- 作者:timescale -- 发布时间:2016/10/10 17:00:36 -- 64位VB启动后不能停止,停下再启动就报出现异常(如图)。32位的则没有这个问题 |
-- 作者:yukizzc -- 发布时间:2016/10/10 17:11:38 -- 按照说明,重新建一个项目试试呢 |
-- 作者:timescale -- 发布时间:2016/10/10 17:40:04 -- 如果停止后不运行 工具--开始调试,那么再启动是正常的;如果运行了 工具--开始调试,就会出现上面提示“启动VBS引擎时出现异常”。新建项目的测试也是一样的。
可能在那个脚本调试补丁上,如何补呢? 提示安装成功,但每次又提示安装。 |
-- 作者:timescale -- 发布时间:2016/10/11 8:37:57 -- 基本上折腾清楚了 : 1. 4.00版32位不能调用自定义函数,64位启动VB有问题(如果启动过调试); 2. 3.92版64位启动VB有问题(如果启动过调试),32位可以用,虽然调试基本不能用,只是帮助发现语法错误; 3. 暂时只好用3.92x86。 |
-- 作者:yukizzc -- 发布时间:2016/10/11 9:01:10 -- 1、不要去用那个调试工具,一般调试我们都建议自己在代码里插入msgout进行输出查看的
|
-- 作者:timescale -- 发布时间:2016/10/11 9:49:04 -- 明白了,不用调试工具,开市的时候64位的能正常运行,32位的又不行的。 谢谢! |
-- 作者:yukizzc -- 发布时间:2016/10/11 10:25:50 -- 和32没关系的,你本地新建一个项目然后新建默认自定义函数输出
可以通过两种方法添加自定义函数: 1、在公式编辑器界面中,鼠标在“函数”解释定义区单击右键,然后选择“添加自定义函数”。 2、在Visual Basic工程管理器中选择Function模块,进入Visual Basic编辑界面,然后选择“插入”菜单中的“过程”。 有关自定义函数的格式 每个自定义函数都会有一个Formula对象,即使没有参数的自定义函数也至少有这么一个对象参数存在。每次公式系统执行遇到自定义函数的时候,会不断的依次调用它,直至整个公式解释完毕。 注意:请不要试图在Function模块中直接添加自定义函数,因为这样系统不会承认他。 [此贴子已经被作者于2016-10-11 10:26:32编辑过]
|