BCB调用Vc写的Ocx,有那个变量可以对应COleSafeArray这个Vc变量呢

baby52u 2013-03-13 12:33:48
调用symbol的 ssiconnect.ocx 时遇到其中一个函数
typedef /* [wire_marshal] */ struct tagVARIANT VARIANT;
long __fastcall GetDecodeData(VARIANT* DecodeData, short Type, short* SSICode);

而在VC例程中DecodeData使用的是COleSafeArray这个类型。捣鼓了好久也没弄明白,在BCB中有那个可以代替这个变量呢
COleSafeArray sa;
COleSafeArray *psa = &sa;
unsigned char *ptmpbuf;
short code;

sa.Clear();

m_ssi.GetDecodeData(psa,VT_UI1, &code );
...全文
397 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2013-03-13
  • 打赏
  • 举报
回复
COleSafeArray是从VARIANT继承来的,可以用VARIANT对象代入。
baby52u 2013-03-13
  • 打赏
  • 举报
回复
我试过在Vb上确实能返回正确数值,我故意把参数vbString改为其他值,返回值就成0了。
baby52u 2013-03-13
  • 打赏
  • 举报
回复
len一直返回0 正常应该返回扫描数据的长度。 Visual Basic programmers will set the Type parameter to vbString. VC++ programmers can set the parameter to VT_BSTR or they may wish to set it to VT_UI1 if DecodeData is expected to contain binary data. 另一个文档上: he type specifier is needed because although Visual Basic programs may manipulate the data using a vbString, Visual C++ programmers use a data type specifier of VT_UI1, and DecodeData would be a pointer to ColeSafeArray, allowing the returned data to be manipulated as an array of unsigned character.
ccrun.com 2013-03-13
  • 打赏
  • 举报
回复
GetDecodeData以后,返回值len是多少?OCX的开发方有没有提供文档什么的?
baby52u 2013-03-13
  • 打赏
  • 举报
回复
我直接用VARIANT对像,但没有返回值呢 COleSafeArray应该是个安全数组 : tagVARIANT varChunk; SAFEARRAY *psa; SAFEARRAYBOUND rgsabound[1]; rgsabound[0].cElements = 100; rgsabound[0].lLbound = 0; psa = SafeArrayCreate(VT_UI1,1,rgsabound); varChunk.vt = VT_ARRAY|VT_UI1; varChunk.parray = psa; short tt; SafeArrayLock(psa); long len=SSIConnect1->GetDecodeData(&varChunk,VT_UI1,&tt); SafeArrayUnlock(psa); unsigned char pReceData[512]; memset(pReceData,0,sizeof(pReceData)); long i=0; strcpy(pReceData,(unsigned char *)varChunk.parray->pvData); SafeArrayDestroy(psa); 仍然不行 请赐教

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧