Rss & SiteMap

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

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

标题:关于VBA和C++的混合编程

1楼
zyyh 发表于:2016/5/14 16:34:26
原帖子 是这个 http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=11505
我试验到了 

Sub Test()
Dim MyAddin '创建一个变量

Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")
MyAddin.MyTest(400)

End Sub


这个已经试验成功了,成功之后就困惑了  

MyAddin.MyTest(canshu)  

这个参数必须是常量啊  数组啊,变量啊  包括两个常量都传递不进去,非常像线程的传递参数,但是限制比线程的传递参数还多。

请问下 是我理解有问题 还是测试有问题  或者说  金字塔本身不支持这样的结构

2楼
王锋 发表于:2016/5/14 17:37:55

变量传递不过去啥意思?报什么错?

可否问题描述的详细一些?

3楼
zyyh 发表于:2016/5/14 20:15:01

Sub Test()
Dim MyAddin '创建一个变量

Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")

dim a

a=400
MyAddin.MyTest(a)

End Sub

就会报错 报错是类型不匹配

Sub Test()
Dim MyAddin '创建一个变量

Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")

dim a,b

a=400

b=300
MyAddin.MyTest(a,b)

End Sub

报错 就是 SUB过程里面 不允许传递括号,若改成 msgbox MyAddin.MyTest(a,b)  就会报错为 a.mytest 参数错误


4楼
zyyh 发表于:2016/5/14 20:20:03

Sub Test()
Dim MyAddin '创建一个变量

Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")

MyAddin.MyTest(400)

End Sub

就是正确的

Sub Test()
Dim MyAddin '创建一个变量

Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")

dim a

a=400
MyAddin.MyTest(a)

msgbox 11

End Sub

就是什么都不管  也不执行下去  msgbox 都不执行了


5楼
王锋 发表于:2016/5/15 17:42:14

使用系统自带的C++范例编译的的Activex控件测试,未发现你说的4楼的情况

至于3楼你的描述,我们不清楚你的C++代码中的接口是如何定义的,只要类型匹配是不会报这种错的,建议你还是多检查你的C++代码

6楼
zyyh 发表于:2016/5/16 14:07:05
其它问题 都解决了 原因是因为变量采用了自动的变量,VB6.0  但是那个数组 实在不知道该怎么传,能否写下示例 

Sub Test()
Dim MyAddin '创建一个变量

Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")

dim a(),b()

redim a(1)

a(0)=1

a(1)=2

'要求此处传递一个数组进去 返回一个数组出来

b=MyAddin.MyTest(a)

End Sub


谢啦

7楼
pel46585 发表于:2016/5/16 14:24:59
你传递数组的写法没有错。
 float VBSAddin::MyTest(double Value) 
{
 CString strValue;
 strValue.Format("%f",Value);
 AfxMessageBox(strValue);
 return 0.0f;
}
参数是DOUBLE,你非要传递数组过去,当然出错了。
修改C++部分就OK了 
8楼
zyyh 发表于:2016/5/16 14:46:22
我自己搞定了  我确实传递数组进去了  并且能够传递出来  采用的不是C++ 而是 VB6.0
9楼
zyyh 发表于:2016/5/16 14:48:15
原因是因为 VBA采用了 自动变量 
10楼
王锋 发表于:2016/5/16 15:03:29

我们只有C++的数组传递方案,没有VB6的

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


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