社区
ActiveX/COM/DCOM
帖子详情
tagSAFEARRAY读不出数据,SafeArrayAccessData返回值是成功的,但是地址冲突
林爷万福
2021-05-15 07:05:28
tagSAFEARRAY* wave= ptr->GetWavelengths(0);
double * pData=new double[2048];
SafeArrayAccessData(wave, (void HUGEP **)&pData);
double Item = pData[10];
Edit2->Text =Item;
以上代码返回地址冲突信息,不知道问题出在哪里
...全文
276
1
打赏
收藏
tagSAFEARRAY读不出数据,SafeArrayAccessData返回值是成功的,但是地址冲突
tagSAFEARRAY* wave= ptr->GetWavelengths(0); double * pData=new double[2048]; SafeArrayAccessData(wave, (void HUGEP **)&pData); double Item = pData[10]; Edit2->Text =Item; 以上代码返回地址冲突信息,不知道问题出在哪里
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ooolinux
2021-05-15
打赏
举报
回复
如果数组访问越界也可能会出现access violation错误,不知道你的数组够不够大。
如何存储二进制
数据
方法
SafeArray 在ADO编程中经常使用。它的主要目的是用于automation中的数组型参数的传递。因为在网络环境中,数组是不能直接传递的,而必须将其包装成 SafeArray。实质上SafeArray就是将通常的数组增加一个描述符,说明其维数、长度、边界、元素类型等信息。SafeArray也并不单独使用,而是将其再包装到VARIANT类型的变量中,然后才作为参数传送
出
去。在VARIANT的vt成员的
值
如果包含VT_ARRAY|...,那么它所封装的就是一个SafeArray,它的parray成员即是指向SafeArray的指针。SafeArray中元素的类型可以是VARIANT能封装的任何类型,包括VARIANT类型本身。
ADO实现大型二进制
数据
在
数据
库中的存取
ADO实现大型二进制
数据
在
数据
库中的存取(论文)
Java通过Jacob调用ActiveX,进行二进制
数据
交换
该工程项目演示了Java通过jacob1.17调用ActiveX的基本方法。对于单个的基本类型的
数据
(byte、short、long、BOOL)等类型的
数据
,以及有很多字节组成的可见英文字符、汉字等组成的字符串(LPCTSTR、BSTR类型都会进行编码转换)来说,使用VC的ActiveX项目向导可以方便地实现;对于二进制
数据
的交换必须使用Variant类型,但是在实际使用过程中使用VC2008ActiveX项目向导生成的ocx触发事件中带有Variant类型的参数时,ocx控件在触发事件消息之后就会
出
现内存异常,导致程序无法正常运行,而采用VC6.0生成的事件触发代码就运行正常,不知道是什么原因。采用Variant的SafeArray
数据
类型可以实现二进制
数据
的交换,通过SafeArrayCreateVector创建
数据
缓存空间,
SafeArrayAccessData
锁定内存
数据
块,SafeArrayUnaccessData解除内存
数据
块的锁定,SafeArrayDestroy释放内存
数据
空间。
MFC应用程序调用控件中
返回
值
之结构体和数组(控件由C++写成
现在网上资料基本上为VC6.0开发,涉及VS2010的少之又少,两者在某些处理上还是存在很大程度上的不同,以下由VS2010开发。此应用涉及2个知识点: 1、控件怎么
返回
数组或结构体; 2、应用程序怎么去调用上述
返回
值
。
safearray-2.zip_SafeArray
使用SAFEARRAY传递二进制
数据
ActiveX/COM/DCOM
703
社区成员
3,002
社区内容
发帖
与我相关
我的任务
ActiveX/COM/DCOM
C++ Builder ActiveX/COM/DCOM
复制链接
扫一扫
分享
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章