使用SAFEARRAY返回的代码

前天碰到有人问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

(0)

相关推荐

  • 使用SAFEARRAY返回的代码

    前天碰到有人问SAFEARRAY的问题,我正好对VB SCRIPT里面如何得到COM组件返回的数组感兴趣,就试验了一下. IDE用的是VC7.1 开始都差不多,建立工程,建立COM对象,建立方法: 接口定义: [id(2), helpstring("method GetArray")] HRESULT GetArray1([out,retval] VARIANT* v); 方法实现: STDMETHODIMP CATL3::GetArray1(VARIANT * pvaVariant)

  • jquery小火箭返回顶部代码分享

    这是一款基于jquery小火箭返回顶部特效源码,解决了页面太长造成的用户返回页面顶端困难. 为大家分享的jquery小火箭返回顶部代码如下 <head> <title>jquery小火箭返回顶部代码</title> <link href="css/top.css" rel="stylesheet" type="text/css"/> </head> <body style=&quo

  • asp.net(文章截取前几行作为列表摘要)无损返回HTML代码

    复制代码 代码如下: <BR>        /* <STRONG>时间很久远了,有码友要,我抄了下来,记得使用的时候还是有部分例外情况要处理,大部分是ok的.</STRONG>         * 函数:          * 说明:无损返回HTML代码         *               * 作者:卡斯Kas(QQ:10590916)         * 修改:2010-12-13.         */ public static string Lef

  • laravel 错误处理,接口错误返回json代码

    Laravel 默认已经为我们配置好了错误和异常处理,我们在 App\Exceptions\Handler 类中触发异常并将响应返回给用户. 所有异常都由类App\Exceptions\Handler处理,该类包含两个方法:report和render report方法只是将异常传递给异常被记录的基类,我们这里主要是针对 render 的修改: 先看代码: public function render($request, Exception $exception) { if($request->i

  • Vue请求java服务端并返回数据代码实例

    这篇文章主要介绍了Vue请求java服务端并返回数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近在自学vue怎么与java进行数据交互.其实axios还是挺简单的,与ajax请求几乎一样,无外乎也就是要解决下跨域的问题. 废话不多说了,直接贴代码,一看就懂! //向springmvc Controller发起请求,传递一个参数 get请求(带参数传递) axios.get('http://127.0.0.1:8088/inas/

  • Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值进行其他操作,下面的方法以作参考: 一,首先重写threading类,使其满足调用特定的方法获取其返回值 import threading class MyThread(threading.Thread): """重写多线程,使其能够返回值""" d

  • django从后台返回html代码的实例

    需求:有时需要直接从后台返回html代码,并带有相应的css,免得在前端再写一堆嵌入代码进行判断. django从 views 往 templates 传输html代码时,默认是不渲染此html代码,原因是为了安全. 而为了渲染html代码,需要额外加上一些代码: from django.utils.safestring import mark_safe deploy_success = mark_safe('<span class="label label-success"&g

  • MVC生成页码选择器返回HTML代码详解

    我主要讲此代码用于MVC的分布页. 先看最终效果最终效果: 样式为bootstrap3中的分页"pagination",如果不使用bootstrap单独提出来并不大 页码生成代码为: public string GetPaginationHtml(PaginationViewModel p) { var PageNum = p.Page;//当前页码(页码从1开始) var PageCount = p.PageCount;//总页数 var ItemCount = p.ItemCoun

  • 网页中返回顶部代码(多种方法)另附注释说明

    下面就说下简单的返回顶部效果的代码实现,附注释说明. 1. 最简单的静态返回顶部,点击直接跳转页面顶部,常见于固定放置在页面底部返回顶部功能 方法一:用命名锚点击返回到顶部预设的id为top的元素 复制代码 代码如下: <a href="#top" target="_self">返回顶部</a> 方法二:操作scrooll函数用来控制滚动条的位置(第一个参数是水平位置,第二个参数是垂直位置) 复制代码 代码如下: <a href=&qu

  • 用jQuery实现的智能隐藏、滑动效果的返回顶部代码

    在线DEMO:传送门 HTML代码(放在页面任意位置,并用CSS美化): 复制代码 代码如下: <p id="back-to-top"><a href="#top"><span></span>回到顶部</a></p> JS代码: <script type="text/javascript" src="js/jquery-1.7.2.min.js"&g

随机推荐