欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 关于VBA和C++的混合编程

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4513人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
zyyh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
关于VBA和C++的混合编程  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2016/5/14 17:37:55 [只看该作者]

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

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By: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 参数错误



 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2016/5/15 17:42:14 [只看该作者]

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

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By: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


谢啦


 回到顶部
帅哥哟,离线,有人找我吗?
pel46585
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:167 积分:661 威望:0 精华:1 注册:2009/12/25 23:43:24
  发帖心情 Post By: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了 

 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By:2016/5/16 14:46:22 [只看该作者]

我自己搞定了  我确实传递数组进去了  并且能够传递出来  采用的不是C++ 而是 VB6.0

 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By:2016/5/16 14:48:15 [只看该作者]

原因是因为 VBA采用了 自动变量 

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2016/5/16 15:03:29 [只看该作者]

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部