我用这种方法保存我建的TObject对象,为什么没有办法读出。。
Procedure MyobjSaveToFile(IobjList:TObjectList;IfileName:String);
Var
I: Integer;
LOpt:TFileStream;
PPos:PInteger;
Begin
LOpt:=TFileStream.Create(IfileName,fmCreate);
For I := 0 To IobjList.Count - 1 Do Begin // Iterate
PPos:=Pointer(IobjList.Items[i]);
Inc(PPos);
LOpt.Write(ppos^,IobjList.Items[i].InstanceSize);
End; // for
LOpt.Free;
End;Procedure MyobjLoadFromFile(Iobjlist:TObjectList;IfileName:String;Ltep:TClass);
Var
LOpt:TFileStream;
Ppos:PInteger;
lObj:TObject;
Begin
LOpt:=TFileStream.Create(IfileName,fmOpenRead);
Iobjlist.Clear;
while LOpt.Position<>LOpt.Size do Begin
lObj:=ltep.Create;
pPos:=Pointer(lObj);
Inc(Ppos);
LOpt.Read(Ppos^,lObj.InstanceSize);
Iobjlist.Add(lObj);
End;
LOpt.Free;
End;
Procedure MyobjSaveToFile(IobjList:TObjectList;IfileName:String);
Var
I: Integer;
LOpt:TFileStream;
PPos:PInteger;
Begin
LOpt:=TFileStream.Create(IfileName,fmCreate);
For I := 0 To IobjList.Count - 1 Do Begin // Iterate
PPos:=Pointer(IobjList.Items[i]);
Inc(PPos);
LOpt.Write(ppos^,IobjList.Items[i].InstanceSize);
End; // for
LOpt.Free;
End;Procedure MyobjLoadFromFile(Iobjlist:TObjectList;IfileName:String;Ltep:TClass);
Var
LOpt:TFileStream;
Ppos:PInteger;
lObj:TObject;
Begin
LOpt:=TFileStream.Create(IfileName,fmOpenRead);
Iobjlist.Clear;
while LOpt.Position<>LOpt.Size do Begin
lObj:=ltep.Create;
pPos:=Pointer(lObj);
Inc(Ppos);
LOpt.Read(Ppos^,lObj.InstanceSize);
Iobjlist.Add(lObj);
End;
LOpt.Free;
End;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货