我用一个TList存储我定义的一种结构,如何存储它到文件中去呢?(100分)

  • 主题发起人 主题发起人 周键
  • 开始时间 开始时间

周键

Unregistered / Unconfirmed
GUEST, unregistred user!
结构如下:
typedef struct SLine

{
TPoint nStart;
TPoint nEnd;
TfArrow nArrow;
int xText;
int yText;
} TSLine;

TList中存放了许多这种结构,现在我想把它存放到文件中去,该怎么做?
能不能用TWriter??
 
Type
PSLine = ^TSLine;

procedure SaveList(Lst: TList; Stream: TStream);
var
i, n: Integer;

begin
n := Lst.Count;
Stream.WriteBuffer(n, SizeOf(Integer));
for i := 0 to Lst.Count - 1 do
Stream.WriteBuffer(PSLine(Lst.Items)^, SizeOf(TSLine));
end;

procedure ReadList(var Lst: TList; Stream: TStream);
var
i: Integer;
p: PSLine;
begin
if not Assigned(Lst) then Lst := TList.Create;
// 清空原来的List防止存在内存漏洞
for i := 0 to Lst.Count - 1 do
if Assigned(Lst.Items) then FreeMem(Lst.Items, SizeOf(TSLine));
Stream.ReadBuffer(i, SizeOf(Integer));
Lst.Count := i;
for i := 0 to Lst.Count - 1 do
begin
New(p);
Stream.ReadBuffer(p^, SizeOf(TSLine));
Lst.Items := p;
end;
end;
 
你真行,我再把你的PAS翻译成。.cpp如通过我把100全给你。
 
最早的标准Pascal中就有纪录型文件的概念了,不过Delphi中的Stream用起来更加方便一些
 
我试过了,Another_eYes的方法可以,90分给你。
 
多人接受答案了。
 
后退
顶部