数据保存(50分)

  • 主题发起人 主题发起人 hongsen
  • 开始时间 开始时间
H

hongsen

Unregistered / Unconfirmed
GUEST, unregistred user!

定义父类father,定义子类son1,son2,son3,定义类another,

定义类mydata,包含两个列表list1 ,list2,其中list1中的对象为
son1,son2或son3的对象实例,list2中的对象为another的对象实例。
请问如何保存mydata?
 
father 定义一个Virtual 方法SaveTostream(or other name)
son override 此方法
mydata 对于List中的每个对象调用它的SaveToStream 方法
another 最好有同名方法,否则判断之:
if Tobject(List2) is TAnother then
TAnother(List2).Save...
 
在savetofile中如何编写代码,用如下方式吗?
writelistbegin
for i:=0 to list1.count-1 do
保存每一个对象
writelistend
writelistbegin
for i:=0 to list2.count-1 do
保存每一个对象
writelistend

在打开文件时,我用如下语句,出错:
reader.readlistbegin
while not reader.endoflist do
begin
生成list1
end;
reader.readlistend;
reader.readlistbegin
while not reader.endoflist do
begin
生成list2
end;
reader.readlistend;


另外,既然将list1 & list2封装在component 中,应该可以用writecomponent和
readcomponent直接读写。
 
请大家给我解解这个问题!
 
此问题有点意思,高手们讨论一下如何?
 
同意3H的意见,希望大家多多讨论
 
大家还能就这个问题谈谈吗?
 
.....
private
procedure readList(Reader: TStream);
procedure WriteList(Writer: TStream);
protected
procedure DefineProperties(filer: TFiler); override;
.....
public
...
property SavedData: TList read FList stored true;

....

procedure Txxxx.DefineProperties(filer: TFiler);
begin
inherited defineproperties(filer);
DefineBinaryProperty('SavedData', readlist, writelist);
end;

可以把某个变量作为property由IDE自动保存到.dfm中. 运行时能自动加载设计时的数据.
 
仅仅作为一个想法
我尝试使用WRITECOMPONENT和READCOMPONENT,很理想,也可以保存自己
定义的基于COMPONENT的元件,不过得首先定义类
我认为你的写法正确的,不知道出了什么错误
 
接受答案了.
 
后退
顶部