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

馋嘴蜗牛 2002-06-03 11:23:13
我 VarArrayCreate 了一个 VarArray,想把这个东西存到一个文件中,怎么做呢?听说先转成 Stream 就可以存了,可我不知道怎么转成 Stream。我的 VarArray 里都是 OleVariant 类型的数据。
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
馋嘴蜗牛 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
怎么做呢?
我要把这个东西存到一个文件中

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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