一个我在基础类问题里没人回答的问题,继续问
qwas 2003-01-19 09:38:33 CSDN - 专家门诊 - C++ Builder 基础类问题
回复 | 推荐 | 收藏 | 专题 | 公告 | 管理 | 保存 | 关闭窗口
主 题: 如何将Variant和内存块互相转换?
作 者: qwas (qwas)
等 级:
信 誉 值: 100
所属论坛: C++ Builder 基础类
问题点数: 100
回复次数: 3
发表时间: 2003-01-17 22:09:33
如果是简单的Variant,这似乎不是问题。
可是Variant的数据不知道格式,可能里面是Variant的数组,也可能嵌套多层变体数组。
我查到SAFEARRAY好像有点作用,可是没接触过。
哪位兄弟给点提示。
谢谢。
回复人: halibut(乡下人) ( ) 信誉:100 2003-01-17 22:15:00 得分:0
学习!
Top
回复人: copy_paste(木石三) ( ) 信誉:130 2003-01-17 22:30:00 得分:0
以前写过。。。
void *p = VarArrayLock(V);
try
{
int count = VarArrayHighBound(V, {1, 1});
Move(p, buffer, count);
}
__finally
{
VarArrayUnlock(V);
}
好像是这样,忘了差不多了,看看help,很容易的。。:D:D:D
Top
回复人: qwas(qwas) ( ) 信誉:100 2003-01-19 00:14:00 得分:0
问题是,用varArrayLock后得到的数据块的尺寸未知,因为VarArrayHighBound得到的是数组的元素个数,不是字节数。可以肯定的是,数组元素不是字节型的,所以得不到数据块的尺寸。
即便能得到数据块的尺寸,数据块能再还原成为变体数据吗?我要的是互相转换
Top