VARIANT中存取数组,本例以BYTE数组为例
来源:互联网 发布:酷狗音乐关闭网络功能 编辑:程序博客网 时间:2024/06/16 20:26
//////////////////////////////////////////////////////////////////////////// 作者:童方// QQ:58408454// VARIANT中存取数组,本例以BYTE数组为例// 本例适用于VARIANT中存取一维数组//////////////////////////////////////////////////////////////////////////// 功能:从VARIANT中读取BYTE数组// 参数v:存储Byte数组的Variant变量// 参数lpByteArray:输出字节数组,大小由GetByteArrayFromVariant的返回值决定// 返回值:Variant中的数组元素个数int GetByteArrayFromVariant(VARIANT& v, BYTE* lpByteArray){int nRet = 0;if(v.vt == (VT_ARRAY | VT_UI1)){BYTE* pByte;try{::SafeArrayAccessData(v.parray, (void **)&pByte);nRet = v.parray->rgsabound->cElements;if(lpByteArray)memcpy(lpByteArray, pByte, nRet);::SafeArrayUnaccessData(v.parray);}catch(...){nRet = -1;}}return nRet;}//////////////////////////////////////////////////////////////////////////// 功能:向Variant对象中存储BYTE数组// 参数v:用于存储Byte数组的Variant对象指针// 参数lpByteArray:需要向Variant对象中存储的数据// 参数nLength:存储数据元素个数// 返回值: 存储是否成功BOOL SetByteArrayToVariant(VARIANT* v, BYTE* lpByteArray, int nLength){try{SAFEARRAY* psa = NULL;SAFEARRAYBOUND rgsabound[1];rgsabound[0].lLbound = 0;rgsabound[0].cElements = nLength;psa = SafeArrayCreate(VT_UI1, 1, rgsabound);for(long i=0; i<nLength; i++)SafeArrayPutElement(psa, &i, &lpByteArray[i]);v->vt = VT_ARRAY | VT_UI1;v->parray = psa;}catch(...){return FALSE;}return TRUE;}//////////////////////////////////////////////////////////////////////////// 使用示例void Test(){BYTE Data[100];int i;for(i=0; i<100; i++)Data[i] = i + 1;VARIANT v;VariantInit(&v);SetByteArrayToVariant(&v, Data, 100);int nLength = GetByteArrayFromVariant(v, NULL);ASSERT(nLength == 100);BYTE * Data1 = new BYTE[nLength];GetByteArrayFromVariant(v, Data1);for(i=0; i<nLength; i++){ASSERT(Data[i] == Data1[i]);}VariantClear(&v);delete [] Data1;}
- VARIANT中存取数组,本例以BYTE数组为例
- 将图像BYTE(unsigned char)数组转换为VARIANT类型
- Java中如何将以byte数组给出的数据转换为double数组形式
- java中InputStream转化为byte[]数组
- Java 中String转化为byte数组
- java中InputStream转化为byte[]数组
- java中InputStream转化为byte[]数组
- java中InputStream转化为byte[]数组
- java中InputStream转化为byte[]数组
- unity byte数组存储为.byte文件
- byte数组转换为字符串
- Byte数组转化为String
- 图片转换为byte[]数组
- int转换为byte数组
- inputStream转化为byte[]数组
- Android如何将各种资源定义在一维数组和二维数组中(以图片为例)
- byte数组转化为int数组
- 使用ADO实现vc中二进制文件数据的存取(以图像在数据库中的存取为例)
- 一天精通GNU/Make
- .NET c# Color对象的使用介绍(转)
- 不容错过的精选免费 jQuery UI 主题大荟萃
- STL几个(set map vector string)用法
- android加载include
- VARIANT中存取数组,本例以BYTE数组为例
- if...else...感言
- YAFFS移植经验总结
- 取得设备上的字符集方法_int GetTextCharset( HDC hdc )
- System.Runtime.InteropServices.COMException (0x800A03EC)
- Android编译系统详解(二)
- Linux字符设备驱动程序编写基本流程
- 人生如戏。分手游戏:伤感日志
- adb shell 命令详解