怎么从一个long型数组构建一个VARIANT结构
2012-10-22 12:46
183 查看
要搞清楚这个问题首先要明白什么VARIANT类型,这样就很容易的知道如何从一个long型数组构建一个VARIANT结构。
什么是VARIANT类型:
实际上VARIANT也只不过是一个新定义的结构罢了,它的主要成员包括一个联合体及一个变量。该联合体由各种类型的数据成员构成, 而该变量则用来指明联合体中目前起作用的数据类型。我们所关心的接收到的数据就存储在该联合体的某个数据成员中。
该联合体中包含的数据类型很多,从一些简单的变量到非常复杂的数组和指针。
既然VARIANT是一个联合体,那我们从long转换到它就有了基本思路了,我们知道联合体的一个基本特性,实际上就是一个多种类型的泛指,可以当做联合体中的任何类型来处理,最终有编译器来帮我们处理实际的细节,好多脚本语言底层的实现都是利用了联合体的这个特性,在COM中为了接口的兼容性和灵活性也使用了联合体的这个特性,具体实现方式就如@马瑜所实现的,我只说下原理哈。
long 数组转Variant
void longArray2Variant(long lData, lon lData1, long lData2, long lData3,VARIANT& var)
{
CComSafeArray<long> arrays(4);
arrays.SetAt(0, lData);
arrays.SetAt(1, lData1);
arrays.SetAt(2, lData2);
arrays.SetAt(3, lData3);
CComVariant src(arrays);
VariantCopy(var, &src);
}
转自:http://www.dewen.org/q/1024
什么是VARIANT类型:
实际上VARIANT也只不过是一个新定义的结构罢了,它的主要成员包括一个联合体及一个变量。该联合体由各种类型的数据成员构成, 而该变量则用来指明联合体中目前起作用的数据类型。我们所关心的接收到的数据就存储在该联合体的某个数据成员中。
该联合体中包含的数据类型很多,从一些简单的变量到非常复杂的数组和指针。
既然VARIANT是一个联合体,那我们从long转换到它就有了基本思路了,我们知道联合体的一个基本特性,实际上就是一个多种类型的泛指,可以当做联合体中的任何类型来处理,最终有编译器来帮我们处理实际的细节,好多脚本语言底层的实现都是利用了联合体的这个特性,在COM中为了接口的兼容性和灵活性也使用了联合体的这个特性,具体实现方式就如@马瑜所实现的,我只说下原理哈。
long 数组转Variant
void longArray2Variant(long lData, lon lData1, long lData2, long lData3,VARIANT& var)
{
CComSafeArray<long> arrays(4);
arrays.SetAt(0, lData);
arrays.SetAt(1, lData1);
arrays.SetAt(2, lData2);
arrays.SetAt(3, lData3);
CComVariant src(arrays);
VariantCopy(var, &src);
}
转自:http://www.dewen.org/q/1024
相关文章推荐
- 怎么从一个txt格式的文件中一次读取10个值并赋值给一个数组???
- C#中结构数组怎么定义?怎么获取一个字符的ASCII码?
- 构建一个新数组使用concat实现
- 谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?
- 一个数组保存了N个结构,每个结构保存了一个坐标,结构间的坐标都不相同,请问要找到指定坐标的结构除了遍历整个数组还有更好的办法吗?
- C#中怎么判断一个数组中是否存在某个数组值
- 使用动态数组结构的一个好处
- C#中怎么判断一个数组中是否存在某个数组值
- 链表逆序(递归&非递归)/倒序输出链表值/用一个递增序列构建平衡二叉搜索树/用递归的方法判断数组是不是升(降)序排列
- 怎么定义一个int[n]数组且初始化
- 华为机试:从一个数组中选取不同的数(均小于10)组成一个最大的三位数
- 数组是首尾相连的,即相当于数组是一个环的结构,要求从这个环的结构中求出最大的和
- 请问C++在坐标轴内怎么计算一个长方形和十字形状的面积,用数组保存的坐标点
- Java从一个数组指定位置拷贝到另外一个数组的指定位置-新法
- 6.33③ 假定用两个一维数组L[1..n]和R[1..n]作为 有n个结点的二叉树的存储结构, L[i]和R[i]分别指 示结点i的左孩子和右孩子,0表示空。试写一个算法 判别结点u是否为结点v的
- 谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?
- memset清空一个结构类型的变量或数组
- 构建一个数组
- 怎么理解一个规模大且结构复杂的c工程源码
- java实现从一个整型数组中随机取一个数