首页 > 编程 > VBScript > 正文

使用SAFEARRAY返回的代码

2020-06-26 18:06:07
字体:
来源:转载
供稿:网友
前天碰到有人问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 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表