用户登录
用户注册

分享至

使用SAFEARRAY返回的代码

  • 作者: 威森莫丶吾辣莫率
  • 来源: 51数据库
  • 2021-09-05
前天碰到有人问safearray的问题,我正好对vb script里面如何得到com组件返回的数组感兴趣,就试验了一下。

ide用的是vc7.1

开始都差不多,建立工程,建立com对象,建立方法:

接口定义:

[id(2), helpstring("method getarray")] hresult getarray1([out,retval] variant* v);

方法实现:
stdmethodimp catl3::getarray1(variant * pvavariant)
{
    std::vector< float> vct;
    vct.push_back(   11.4 );
    vct.push_back(   12.4 );
    vct.push_back(   14.4 );
    ccomsafearray<variant> samatrix;
    for ( int i = 0 ; i < vct.size(); ++i )
    {
        samatrix.add( ccomvariant(vct[i]));
    }
    variantinit(pvavariant);
    ccomvariant var( samatrix );
    var.detach( pvavariant );
    return s_ok;
}

注意的一点就是:vbs或其它脚本环境中要得到返回数组参数,数组中的类型是variant类型。

vbs测试脚本
dim v4

cnxn4.add 1, 2 

v4 = cnxn4.getarray1()

dim x

for x = lbound(v4) to ubound( v4 )
 msgbox v4(x)
next

软件
前端设计
程序设计
Java相关