VBS 调用C++计算后 ,回传Safearray数组给VBS问题, 写了个例程
VBS:
Dim rarr
Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")
rarr = MyAddin.MyTest(History.close(0))
Dim MyVariable
MyVariable = IsArray(rarr)
call application.msgout("是否数组_"&MyVariable&"_上限_"&UBound(rarr)&"_下限_"&LBound(rarr))
call application.msgout("是否数组_"&rarr(1))
For i=0 To UBound(rarr)-LBound(rarr)
call application.msgout("数组值_"&rarr(i))
Next
VC:
VARIANT VBSAddin::MyTest(long a)
{
//返回数组
VARIANT varChunk;
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound=0;
rgsabound[0].cElements=2;
//psa=SafeArrayCreate(VT_I4,1,rgsabound);
psa=SafeArrayCreate(VT_VARIANT,1,rgsabound);
long idx;
long setdt;
idx=0;
setdt=12;
SafeArrayPutElement(psa,&idx,&setdt);
idx=1;
setdt=342;
SafeArrayPutElement(psa,&idx,&setdt);
varChunk.vt = VT_ARRAY|VT_VARIANT;
varChunk.parray = psa;
return varChunk;
}
返回回去,("是否数组_"&MyVariable&"_上限_"&UBound(rarr)&"_下限_"&LBound(rarr)) -true, 0,1
但是 msgout("数组值_"&rarr(i)) 就报类型不匹配,这个该怎么弄,求助啊