SAFEARRAY 读取数据的问题

neverup_ 2010-06-29 04:32:40
数据库中存放图片的字段,读出来后 放到VARIANT 结构体 现在的问题是 我不知道该如何读出 SAFEARRAY 中的数据
还有数组大小
我用 //SafeArrayGetLBound(varBLOB.parray,1,&LBound);
//SafeArrayGetUBound(varBLOB.parray,1,&UBound);
获取出来的上界和下界都是几百万的值 肯定不对吧

贴点代码 大家帮帮忙 找了好多资料 搞不定 只能依靠大家了

VARIANT varBLOB;
varBLOB = m_pRecordset->GetCollect("PersonJob");
LONG lDataLength = m_pRecordset->GetFields()->GetItem("PersonPhoto")->ActualSize;

if(varBLOB.vt == (VT_ARRAY | VT_UI1) && varBLOB.vt!= VT_NULL)
{
SAFEARRAY* buf = NULL;
long LBound;
long UBound;
SafeArrayAccessData(varBLOB.parray,(void **)&buf);
//SafeArrayGetLBound(varBLOB.parray,1,&LBound);
//SafeArrayGetUBound(varBLOB.parray,1,&UBound);
//CString str;
//str.Format(_T("LBound = %l ;UBound = %l; cbElements = %l"),LBound,UBound,varBLOB.parray->rgsabound[0].cElements);
//AfxMessageBox(str);
memset(&tmpPersonInfo.PhotoBuf[0],0,MAX_IMAGE_LENGTH);
for(LONG i = 0; i<lDataLength ;i++)
SafeArrayGetElement(varBLOB.parray,&i,&tmpPersonInfo.PhotoBuf[i]);
SafeArrayUnaccessData(varBLOB.parray);
}
...全文
330 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
neverup_ 2010-06-30
  • 打赏
  • 举报
回复
难道没有人知道?? 再顶! 顶到解决为止~~~
surf515 2010-06-30
  • 打赏
  • 举报
回复
UPPPP
neverup_ 2010-06-29
  • 打赏
  • 举报
回复
UP.
neverup_ 2010-06-29
  • 打赏
  • 举报
回复
到这就给中断了 SafeArrayGetLBound(varBLOB.parray,1,&LBound);

如果改成 SafeArrayGetLBound(varBLOB.parray,0,&LBound);
就又运行的起来 好奇怪啊

不知道是不是用法有问题
stonewater 2010-06-29
  • 打赏
  • 举报
回复
你看看SafeArrayAccessData,SafeArrayGetLBound,SafeArrayGetUBound等函数的返回值
neverup_ 2010-06-29
  • 打赏
  • 举报
回复
UP .

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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