• 全部
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

怎么把 VarArray 的东西存到一个文件中?

馋嘴蜗牛 2002-06-03 11:23:13
我 VarArrayCreate 了一个 VarArray,想把这个东西存到一个文件中,怎么做呢?听说先转成 Stream 就可以存了,可我不知道怎么转成 Stream。我的 VarArray 里都是 OleVariant 类型的数据。
...全文
67 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
馋嘴蜗牛 2002-06-04
black_fox(black_fox)说的可以把VarArray的东西存进去,但是我的 VarArray的每一个元素都是OleVariant类型的。我看存进去的好像都是地址,每个元素都没存进去
回复
踢踏 2002-06-03
关注
回复
短歌如风 2002-06-03
OleVariant的数组?
它可能不是线性的,因为每个元素又可能是数组,你总要有个转换规则吧.
回复
netlib 2002-06-03
你要知道你存放内容的大小,

var
F:TfileStream;
i: integer;
begin
F:=TfileStream.Create(...;
For i:= 0 to vararraycount-1 do
F.write(Vararray[i],Size)//这里的大小你要填进去
F.free;
end;
回复
black_fox 2002-06-03
给你一段hubdog的代码。。。
function FileToVariant(FileName: String): OleVariant;
var
AStream: TFileStream;
MyBuffer: Pointer;
begin
AStream:=TFileStream.create(FileName,fmOpenRead);
try
aStream.Seek(0, soFromBeginning);
Result:=VarArraycreate([0, AStream.size-1], VarByte);
MyBuffer:=VarArrayLock(Result);
AStream.ReadBuffer(MyBuffer^, AStream.Size);
VarArrayUnlock(Result);
finally
AStream.Free;
end;
end;


procedure VariantToFile(FileName: String; var AVariant: OleVariant);
var
AStream: TFileStream;
MyBuffer: Pointer;
Size: Integer;
begin
AStream:=TFileStream.create(FileName,fmCreate);
try
aStream.Seek(0, soFromBeginning);
Size:=VarArrayHighBound(AVariant,1)+VarArrayLowBound(AVariant,1)+1;
MyBuffer:=VarArrayLock(AVariant);
AStream.WriteBuffer(MyBuffer^, Size);
VarArrayUnlock(AVariant);
finally
AStream.Free;
end;
end;

回复
馋嘴蜗牛 2002-06-03
TClientDataNode = class
public
TableName : String;
ClientDataSet : TClientDataSet;
end;

我做了一个 TClientDataNode 的TList列表,我想把这个存起来。
VarArrayCreate([0, (Count * 2 - 1)], VarVariant);
一个 Node 占两个,第一个存 TableName,第二个存 ClientDataSet.Data
怎么做呢?
我要把这个东西存到一个文件中
回复
发帖
Delphi
创建于2007-08-02

4871

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2002-06-03 11:23
社区公告
暂无公告