样将_variant_转化为vc中的数组
来源:互联网 发布:g41g42数控车编程方法 编辑:程序博客网 时间:2024/05/16 19:54
enum VARENUM
{ VT_EMPTY = 0,
VT_NULL = 1,
VT_I2 = 2,
VT_I4 = 3,
VT_R4 = 4,
VT_R8 = 5,
VT_CY = 6,
VT_DATE = 7,
VT_BSTR = 8,
VT_DISPATCH = 9,
VT_ERROR = 10,
VT_BOOL = 11,
VT_VARIANT = 12,
VT_UNKNOWN = 13,
VT_DECIMAL = 14,
VT_I1 = 16,
VT_UI1 = 17,
VT_UI2 = 18,
VT_UI4 = 19,
VT_I8 = 20,
VT_UI8 = 21,
VT_INT = 22,
VT_UINT = 23,
VT_VOID = 24,
VT_HRESULT = 25,
VT_PTR = 26,
VT_SAFEARRAY = 27,
VT_CARRAY = 28,
VT_USERDEFINED = 29,
VT_LPSTR = 30,
VT_LPWSTR = 31,
VT_RECORD = 36,
VT_FILETIME = 64,
VT_BLOB = 65,
VT_STREAM = 66,
VT_STORAGE = 67,
VT_STREAMED_OBJECT = 68,
VT_STORED_OBJECT = 69,
VT_BLOB_OBJECT = 70,
VT_CF = 71,
VT_CLSID = 72,
VT_BSTR_BLOB = 0xfff,
VT_VECTOR = 0x1000,
VT_ARRAY = 0x2000,
VT_BYREF = 0x4000,
VT_RESERVED = 0x8000,
VT_ILLEGAL = 0xffff,
VT_ILLEGALMASKED = 0xfff,
VT_TYPEMASK = 0xfff
};
这个枚举结构里,存着vt值的宏定义,假如m_DataA为VARIANT类型变量,m_DataA .vt = 4,则这个变量里的就是存的一个单精度数据(以上宏在MSDN均可查到所代表的类型),当然,上面的宏可以叠加使用,比如说m_DataA.vt = 8204,转化成十六进制数为0x200C,VT_ARRAY = 0x2000,VT_VARIANT = 12(12的十六进制为:C),变量里存的数据是一个 变体数组类型(VT_ARRAY |VT_VARIANT ).
确定类型以后就可以直接读数了,比如:
variant var; //假设这个变量中保存了数组元素
SAFEARRAY* psa = var.parray;
long count = psa->rgsabound->cElements; //判断元素个数
定义buf数组;
for (long i=0; i<count; i++)
{
SafeArrayGetElement(psa,&i,&buf[i]); //buf为你定义的数组
}
你还可以根据 vt 域的不同来建立更通用的转换例程。为此你可能会考虑:
CString VariantToString(VARIANT * va)
{ CString s;
switch(va->vt)
{ /* vt */ case VT_BSTR:
return CString(vaData->bstrVal);
case VT_BSTR | VT_BYREF:
return CString(*vaData->pbstrVal);
case VT_I4:
s.Format(_T(\"%d\"), va->lVal);
return s; case VT_I4 | VT_BYREF:
s.Format(_T(\"%d\"), *va->plVal);
case VT_R8:
s.Format(_T(\"%f\"), va->dblVal);
return s; ... 剩下的类型转换由读者自己完成
default: ASSERT(FALSE);
// unknown VARIANT type (this ASSERT is optional) return CString(\"\"); } /* vt */}
- 样将_variant_转化为vc中的数组
- 将文件中的内容转化为数组
- VC将输入框中的数字字符串转化为数字
- 将字符串转化为数组
- 将json字符串转化为json数组,以及转化为java中的集合
- 将Byte数组转化为String
- 将Byte数组转化为String
- [转贴]将Byte数组转化为String
- 将Byte数组转化为String
- 将Byte数组转化为String
- 将Byte数组转化为String
- 将Byte数组转化为String
- 将Byte数组转化为String
- 将字符串数组转化为字符串
- 将ArrayList转化为数组array
- 如何将list转化为数组
- 将数组转化为XML数据
- 如何将list转化为数组
- Servlet与Jsp的异同
- js获取select的值
- 堆和栈的区别
- linux -查看当前服务运行状态
- 基于管道通信
- 样将_variant_转化为vc中的数组
- 关于绿色版 MYSQL5 的资料
- 各种Jdk版本下,对Map的遍历
- (静态工厂方法来获取spring bean类)
- 关于jquery的事件重复执行的探讨
- ajaxFileUpload()中的success和error中的回调函数不执行的备注
- Android测试
- Java对Excel文件的读取
- mysql查询性能分析(show status,show profile,explain)