以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]还是vbs传递数组给dll的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=165258)

--  作者:zaqwsxqwer
--  发布时间:2018/8/29 22:05:15
--  [求助]还是vbs传递数组给dll的问题
看了相关的帖子,具体到编程上,还是有调试通不过的地方,不知道问题在哪里,
希望vbs可以传递数组给dll中:
vbs代码如下:
Dim d(0)
 d(0)=12.67
 
 Dim MyAddin 
 
Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")
MyAddin.MyTest d(0)

这里MyAddin.MyTest就是后台dll里的方法,如下:
float VBSAddin::MyTest(const VARIANT FAR& vbkh)
{

 CString strValue;
strValue.Format("%x",vbkh.vt);
AfxMessageBox("数据类型" + strValue);
。。。
}

首先vt数据类型就出不来,不知道什么值,更谈不上之后的安全数组访问数组元素了,各位老大,能有例子看看么,帖子里只有谈到安全数组啊,什么的
没有具体代码,对我们小白来说,这里的程序写起来就摸不到头脑,百度了半天,合适的也很少。
在这里跪谢各位老大,大哥。

--  作者:无为剑
--  发布时间:2018/8/29 22:23:28
--  
http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=162800&skin=0
看一下历史讨论帖,是否能帮助到你

--  作者:zaqwsxqwer
--  发布时间:2018/8/29 22:55:28
--  
老大,这三个帖子我都看了好几遍

可以的,Activex控件的属性使用 VT_VARIANT 即可,这是C++专门针对Activex的类型,可以包含任何VBA中的数值类型。

 

C++中使用 COleSafeArray 对象来出来VBA传递过来的数组即可。

具体请百度搜索。

基本我就是这个思路做,但编程细节上,老是返回值不对,就如我帖子里说的,要有例程看一下就好了,
细节上不知道c++那个接口写的对不对,之后如何取得值的程序片段也只能碰,文档看了一大堆,各种试
就是不行。
多谢老大回复!!!

--  作者:马良
--  发布时间:2018/8/30 0:01:12
--  
你前面说的数值类型不出来是怎么个意思?是数值不是你要的类型还是根本就没对话框弹出?
--  作者:zaqwsxqwer
--  发布时间:2018/8/30 0:21:22
--  
对话框弹不出来,那肯定是在调用vt的时候出错了,所以我怀疑函数输入参数的类型是否写的不对
--  作者:马良
--  发布时间:2018/8/30 9:52:54
--  
你试试在函数的最前面加个随便弹窗的代码,我怀疑这个函数可能都没被正常调用
--  作者:zaqwsxqwer
--  发布时间:2018/8/30 10:38:29
--  
函数我确认过,调用,并且我在函数体内加了若干弹出框,来确认到哪条语句就down了,现在主要问题是,根据我上面的vbs和函数代码
我不太确认我的接口是否正确,传入参数类型是否正确。
关于传入数组的问题,论坛里也没有例子代码可以学习参考,对于我们没做过混合编程,特别是这种比较复杂的数组参数传递的人来说,就比较
耗费时间了,论坛里的vbs和c++混合编程的例子,是简单的数据类型(float类型)传递,这些都已经通过了,希望大哥们能整一个数组传递的
事例程序,这样以后会节省很多小白的时间,之前的相关帖子我基本全看过了,很多人提问,最终是否解决,也不得而知,所以,我觉得这个问题
也算是共性的问题,希望大哥们百忙中抽出点时间,整个例子,这样对于我们那是相当大的帮助!
跪谢!!!

--  作者:无为剑
--  发布时间:2018/8/30 11:46:21
--  
您的这个问题已经超过了我们对非专业版用户的服务范畴,如果您是VIP用户,建议该帖转至VIP论坛处理,否则我们将择机另安排开发人员予以支持,请耐心等待。