关于SafeArray

nx 2004-03-28 11:19:01
我现在在做一个ASP组件, 目的是想把C++数据写回到浏览器中, 但是在用SafeArray时遇到问题, 因以前没有用过特此请教.
代码如下:

SAFEARRAYBOUND bound;
BYTE* pData = {.....};
bound[0].cElements = lDataSize;
bound[0].lLbound = 0;
pSafeArray = SafeArrayCreate(VT_UI1, 1, bound);
SafeArrayAccessData(pSafeArray, &lpData);
memcpy(lpData, pData, lDataSize);
SafeArrayUnaccessData(pSafeArray);

// creates the safearray to put the bin data
varByteArray.parray = pSafeArray;

// write the data to the Response interface
hr = m_piResponse ->BinaryWrite(varByteArray);

// destroy the safearray
SafeArrayDestroy(pSafeArray);
可是我在IE里什么也没得到. 要是换成下一句就可以看到字符.
CComVariant varData = _T("Hello!");
hr = m_piResponse ->BinaryWrite(varData);
换成字符串则没问题.不知为什么?
我看到有 SafeArrayAllocData 不知是否是在 SafeArrayCreate之后还要为其分配空间啊?
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WQ 2004-03-29
  • 打赏
  • 举报
回复
Get
////////////////////// decode
MatipInfo m_Matipinfo;
memset(&m_Matipinfo,0,sizeof(m_Matipinfo));
long LBound=0,UBound=0;
SafeArrayGetLBound(Data->parray,1,&LBound);
SafeArrayGetUBound(Data->parray,1,&UBound);
int Number=(UBound-LBound)+1;
if(Number==0)
{
return S_FALSE;
}
/////////////
char HUGEP *pbyte1;
SafeArrayAccessData(Data->parray,(void HUGEP* FAR*)&pbyte1);
memcpy(m_Matipinfo.unchMatipOut,pbyte1,Number);
m_Matipinfo.nMatipOutLen=Number;
SafeArrayUnaccessData(Data->parray);
WQ 2004-03-29
  • 打赏
  • 举报
回复
SAFEARRAY FAR* psa1;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = sizeof(m_Matipinfo);
psa1 = SafeArrayCreate(VT_I1, 1, rgsabound);
char HUGEP *pChar;
SafeArrayAccessData(psa1,(void**)&pChar);
memcpy(pChar,&m_Matipinfo,rgsabound[0].cElements);
SafeArrayUnaccessData(psa1);
xenke 2004-03-29
  • 打赏
  • 举报
回复
SafeArrayCreate之后空间就分配好了.varByteArray.vt设置的是什么?BinaryWrite又是如何说明的呢?
nx 2004-03-29
  • 打赏
  • 举报
回复
不好意思,昨晚我仔细看了一下代码,发现在运行的时候数据是空的。提问中的代码是我现拷的。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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