首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

放在TList中的数据的保存有关问题

2012-03-06 
放在TList中的数据的保存问题我定义了一个结构PTaskInfo ^TTaskInfoTTaskInfo recordTaskID:Integer

放在TList中的数据的保存问题
我定义了一个结构

  PTaskInfo = ^TTaskInfo;
  TTaskInfo = record
  TaskID:Integer;
  Description:String[255];

  OfWeek:array[0..6] of Boolean;
  DatesList:array[0..23] of String[25];
  DatesListCount:Byte;
  end;

然后,把数据(指针)不断添加到TList
  var info:PTaskInfo;
  ...
  New(info);
  ...
  var list:TList;
  ...
  list.Add(info);
  ...
  //到程序结果时才调用类似Dispose(list.Items[n])的语句

接着,用TFileStream将TList写入文件

  fStream.Write(list.Items[i]^,sizeof(TTaskInfo));

但是最后用十六进制编辑器查看文件是,发现保存的数据不对,出现一些莫名奇妙的数据(如窗体的属性).

本来不想在record中使用String,但这样用起来方便得多.而且我已经加上String[50]的长度限定,应该没问题了吧???
不知道我在什么地方理解错了,还是我代码那个地方写得有问题,请大家帮帮忙.

[解决办法]
procedure Test;
var
I: Integer;
FList: TList;
FPtr: PTaskInfo;
begin
FList := TList.Create;
try
for I := 0 to 9 do
begin
New(FPtr);
ZeroMemory(FPtr, SizeOf(TTaskInfo));
FList.Add(FPtr);
FPtr^.Description := 'This is Budded.'
end;

with TFileStream.Create('c:\budded.bin', fmCreate) do
try
for FPtr in FList do
Write(FPtr^, SizeOf(TTaskInfo));
finally
Free;
end;
finally
FList.Free;
end;
end;

热点排行