社区
ATL
帖子详情
SAFEARRAY如何转换?
pkzl888
2003-10-17 06:16:38
如何将SAFEARRAY转换为char[],以及如何将unsigned char[] 转换为SAFEARRAY.请无比帮忙!感激不尽!
...全文
144
4
打赏
收藏
SAFEARRAY如何转换?
如何将SAFEARRAY转换为char[],以及如何将unsigned char[] 转换为SAFEARRAY.请无比帮忙!感激不尽!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ldsjlzy
2003-10-18
打赏
举报
回复
SAFEARRAYBOUND Bound;
SAFEARRAY varValue;
long lIndex;
CString strValue;
Bound.cElements = 32;
Bound.lLbound = 0;
varValue.Clear();
varValue.vt = VT_ARRAY | VT_BSTR;
varValue.pArray = SafeArrayCreate(VT_BSTR, 1, &Bound);
for(int i = 0; i < 32; i++)
{
_bstr_ b = strValue[i].AllocSysString;
SafeArrayPutElement (varValue[i].parray, <emp, b.copy());
SysFreeString(b);
}
VariantClear(&varValue);
LeeZi
2003-10-18
打赏
举报
回复
查看MSDN吧,MSDN是最好的老师。
warmchang
2003-10-18
打赏
举报
回复
嗯,Lava_sdb(大波)的讲解够详细,呵呵,我就不说什么了。
shudingbo
2003-10-17
打赏
举报
回复
先SAFEARRAY中获取元素,再添进char中
如,下例中,Parames.parray 为 SAFEARRAY。
把它的元素,付给pReturn
你自己看看代码。
___________________
STDMETHODIMP CUnRealDraw::GetProData(int iProType, VARIANT Parames, VARIANT *pReturn)
{
// Get the parames
HRESULT hr=S_OK;
long lStartBound =0;
long lEndBound = 2;
hr = SafeArrayGetLBound(Parames.parray, 1, &lStartBound);
hr = SafeArrayGetUBound(Parames.parray, 1, &lEndBound);
SAFEARRAYBOUND safeBound[1];
SAFEARRAY* pOutArray;
safeBound[0].cElements = lEndBound-lStartBound+1;
safeBound[0].lLbound = 0;
pOutArray = SafeArrayCreate(VT_VARIANT,1,safeBound);
for(long iIndex = lStartBound; iIndex <= lEndBound; iIndex ++)
{
VARIANT varFlavor;
VariantInit(&varFlavor);
hr = SafeArrayGetElement(Parames.parray,&iIndex, &varFlavor);
if(hr != S_OK)
{
tt="error,can't find the value";
}
if(varFlavor.vt == VT_I4 )
{
long lsz = varFlavor.lVal;
}
if(varFlavor.vt == VT_BSTR )
{
_bstr_t bstrOut(varFlavor.bstrVal);
CComVariant variantFlavor(SysAllocString(varFlavor.bstrVal));
SafeArrayPutElement(pOutArray,&iIndex,&variantFlavor);
tt= bstrOut;
}
}//for loop
//......
//.......
//return the VARIANT
V_VT(pReturn)=VT_ARRAY | VT_VARIANT;
V_ARRAY(pReturn) = pOutArray;
return S_OK;
}
学会使用
Saf
eAr
ray
之 Delphi篇--源码
比如三层架构中通常需要将使用的ClientDataSet数据集传出,那么就可以将DataSet
转换
为
Saf
eAr
ray
,再由其他模块
转换
接收。 ===============================================================================
SegeX SgxVariant:VC封装支持多维数组的变体类型(VRIANT 、
Saf
eAr
ray
)(免费免积分)
SegeX组件之一:CSgxVariant。...CSgxVariant封装了VARIANT,具备以下主要功能:...3)支持CAr
ray
、vector与VARIANT的
转换
(1~4维)。代码适用于VC2012及以上的Windows程序。 使用方法见代码中的CSgxVariant::Test()函数。
串口调试助手源程序.doc
//VARIANT型变量
转换
为Cole
Saf
eAr
ray
型变量 len=
saf
ear
ray
_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k;k++)
saf
ear
ray
_inp.GetElement(&k,rxdata+k);//
转换
为BYTE型数组 for(k=0;k;k++) //将数组
转换
...
标准MFC WinSock ActiveX控件开发实例
文中涉及到VARIANT,
SAF
EAR
RAY
,BSTR的详细使用方法。 另外还提供了WinSock的详细开发步骤,以及如何响应网络超时,网络断开的事件方法以及在VC,VB调用该控件的方法。 一、MFC ActiveX控件开发步骤(VC 6.0): New->...
COM MFC C++各种字符串,类型之间的
转换
上学4年,工作1年,碰到的vc,com下各种类型的
转换
,字符串直接的
转换
,所有的文档,打包上传,给大家一个福利,不用再各处搜集了。我这里比较全了。
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章