首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学者软件二次开发,将采集数据以数组形式回送给软件中。总是提示com-error

2013-09-28 
菜鸟求助:软件二次开发,将采集数据以数组形式回送给软件中。。总是提示com-error。接口函数是:setdata([in]BS

菜鸟求助:软件二次开发,将采集数据以数组形式回送给软件中。。总是提示com-error。
接口函数是:setdata([in]BSTR dataname,[in]LONG datasize,[in]VARIANT data,[out]LONG *ReturnValue)
其中dataname是数据名称,datasize是数据大小,data是float型的数组。ReturnValue可以是返回值。
就是利用上述函数接口将数据数组导入要二次开发的软件,利用该软件进行相关的数据处理。
我试了,很多方法,都不成功,都是提示_com_error,是不是说明我写的接口就不正确。以下,是我的尝试:
(1)setdata(BSTR dataname,LONG datasize,VARIANT data);
(2)setdata(BSTR dataname,LONG datasize,VARIANT *data);
(3)setdata(BSTR dataname,LONG datasize,float *data);
(4)setdata(BSTR dataname,LONG datasize,float data[]);
单步调试,dataname和datasize都没有问题,就是这个float型的数据数组一直不对,不知道该怎么给float型data数组赋值,我直接定义float型数组data1[],如下调用:
setdata(dataname,datasize,data);以及用循环调用setdata(dataname,datasize,data[i])不行,出上述错误。
利用VARIANT型data,先定义float型数据数组,之后将float型转化为VARIANT,之后再调用(1)(2)函数也不行,也出现上述错误。
我学C++时间不长,不太懂,不知怎么弄了,请您帮忙。
C++ 软件 调试 行业数据
[解决办法]
不明白,没看懂!看来是我的功夫不到家!顶贴,等高手吧!
[解决办法]

BSTR dataname;
LONG datasize;
VARIANT data;
LONG ReturnValue;
//...
setdata(dataname,datasize,data,&ReturnValue);
if (ReturnValue==0) {
//...
} else {
//...
}

[解决办法]
VARIANT是COM中,为了传递未知的数据类型,或者为了传递可变的数据类型,而引入的一种结构体。这种结构拥有自己解释所包含的数据类型的能力。

    VARIANT有一个变量vt, 类型为VARTYPE,指定了数据类型:比如:VT_I2,VT_I4,VT_R4,VT_R8等,分别表示short,long,float,double,

热点排行