一个我在基础类问题里没人回答的问题,继续问

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
...全文
70 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
大大怪老张 2003-01-29
  • 打赏
  • 举报
回复
小娃你这是什么态度?!
shclhs 2003-01-25
  • 打赏
  • 举报
回复
GZ
qwas 2003-01-25
  • 打赏
  • 举报
回复
再次表示遗憾,拜拜了,所谓的高手们
qwas 2003-01-22
  • 打赏
  • 举报
回复
有点失望,这是一个有挑战性的问题吗?

众所周知,DCOM可以通过网络传输VARIANT的数据,那么它一定是把VARIANT数据转换成为了一个字节流,而接收方同样可以将字节流转换为VARIANT。

了解了这个方法,我们可以将变体的数据存到文件里、加密数据、压缩数据……大量的应用需要它。当然,我们可以不用VARIANT,但是作为Windows的一个标准的数据结构,他不会从Windows中消失,反而会越来越通用的呦。

变体数据的转换是一个Windows最基本的功能之一,可是我却找不到相关的文档,不知道它是如何实现的(也许我的见识不广)。

所以非常希望各位重视一下这个问题。讨论一下如何?
sw0rd2 2003-01-21
  • 打赏
  • 举报
回复
需要学习!
cscer 2003-01-21
  • 打赏
  • 举报
回复
我也不会,帮你up一下!
qwas 2003-01-20
  • 打赏
  • 举报
回复
没人回答吗?各位,有点同情心好不好。
大大怪老张 2003-01-20
  • 打赏
  • 举报
回复
俺不会。学习

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧