SAFEARRAY向一维、二维数组转换
2008-08-07 21:30
92 查看
这里说明二维数组向SAFEARRAY转换的方法。二维转换如果会了, 一维转换原理相同,只是指定SafeArrayGetElement的索引(第二个参数)不同。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
// 定义动态的二维数组
VARIANT** arg3;
注:这里必须是VARIANT类型,否则在执行SafeArrayGetElement时,用于存储数据的本地数组(第三个参数)下标不是从0开始,这样就会出问题。
// 假设varRet中是从double型二维数组转换而来的。下面从SAFEARRAY中提取数据。
// 获得SAFEARRAY的信息
// 获得维数
UINT uDim = SafeArrayGetDim( varRet.parray );
// 获得元素大小,这个没什么用
UINT uEleSize = SafeArrayGetElemsize( varRet.parray );
// 获得一维的下界和上界
long nDim1UBound;
long nDim1LBound;
SafeArrayGetUBound( varRet.parray, 1, &nDim1UBound );
SafeArrayGetLBound( varRet.parray, 1, &nDim1LBound );
// 获得二维的下界和上界
long nDim2UBound;
long nDim2LBound;
SafeArrayGetUBound( varRet.parray, 2, &nDim2UBound );
SafeArrayGetLBound( varRet.parray, 2, &nDim2LBound );
// 计算元素个数,分配空间使用
long nDim1Count = nDim1UBound - nDim1LBound + 1;
long nDim2Count = nDim2UBound - nDim2LBound + 1;
// 分配空间
arg3 = new VARIANT *[ nDim1Count];
for ( int nn = 0; nn < nDim1Count; nn++ )
{
arg3[nn] = new VARIANT[nDim2Count];
}
// 转换
int x = 0;
int y = 0;
for ( long nDim1 = nDim1LBound; nDim1 <= nDim1UBound; nDim1++ )
{
lIndex[0] = nDim1;
y = 0;
for ( long nDim2 = nDim2LBound; nDim2 <= nDim2UBound; nDim2++ )
{
lIndex[1] = nDim2;
SafeArrayGetElement (varRet.parray, lIndex, &arg3[x][y]); //
y++;
}
x++;
}
// 输出测试结果
for ( i = 0; i < nDim1UBound; i++ )
{
for ( int j = 0; j < nDim2UBound; j++ )
{
CString strMsg;
strMsg.Format( _T( "%f" ), arg3[i][j].dblVal );
AfxMessageBox( strMsg );
}
}
// 释放内存
SafeArrayDestroyData( psa );
for ( nn = 0; nn < nDim1Count; nn++ )
{
delete[] arg3[nn];
}
delete arg3;
相关文章推荐
- 一维、二维数组向SAFEARRAY转换
- 将一维数组强制转换为二维数组
- 字符串分割成一维数组、二维数组,一维数组与二维数组之间的转换
- js将字符串转换为一维二维数组
- php将一维数组转换为每3个连续值组成的二维数组
- PHP实现一维数组转换成二维数组实例
- PHP二维数组(或任意维数组)转换成一维数组的方法汇总
- 二维数组转换为一维
- PHP二维数组(或任意维数组)转换成一维数组的方法汇总
- PHP二维数组(或任意维数组)转换成一维数组的方法汇总
- 一维数组转换成二维数组【C++】
- php 二维数组转换一维数组 array_column
- PHP二维数组(或任意维数组)转换成一维数组的方法汇总
- 一维List转换为二维数组
- C语言一维数组转换为二维数组
- php将一维数组转换为每3个连续值组成的二维数组
- php将一维数组转换为连续个数的二维数组
- 把一维数组转换成二维数组
- 字符串分割成一维数组、二维数组,一维数组与二维数组之间的转换
- js中将字符串转换为一维或者二维数组