A
Adnil
Unregistered / Unconfirmed
GUEST, unregistred user!
设计一个类例如
TProject = class
private
FModified: boolean;
public
property1: sometype1;
property2: sometype2;
property3: sometype3;
.....
propertyn: sometypen;
procedure LoadFromFile;
procedure SaveToFile;
end;
procedure TProject.LoadFromFile;
begin
loadproperty1;
loadproperty2;
...
loadpropertyn;
end;
procedure TProject.SaveToFile;
begin
saveproperty1;
saveproperty2;
...
savepropertyx
//如果propertyx自从读入以后并没有改动过,那么对propertyx的保存就不必要了
...
savepropertyn;
end;
Project经过Load之后,程序界面中对Project对象的每个属性进行显示,用户可对属性进行修改。
现在问题来了,如果用户之修改了其中的一个属性PropertyX,那么这个Save过程该如何写?
如果采用将所有的属性都重新存储一遍的方法则存储比较耗时(例如要经过TCP/IP连接存储到服
务器的一个文件的情况),如果只对PropertyX进行覆盖存储,则需纪录每个属性是否经过改变标记,
类会变得很大。
请问是否有一个较好的解决方法?
TProject = class
private
FModified: boolean;
public
property1: sometype1;
property2: sometype2;
property3: sometype3;
.....
propertyn: sometypen;
procedure LoadFromFile;
procedure SaveToFile;
end;
procedure TProject.LoadFromFile;
begin
loadproperty1;
loadproperty2;
...
loadpropertyn;
end;
procedure TProject.SaveToFile;
begin
saveproperty1;
saveproperty2;
...
savepropertyx
//如果propertyx自从读入以后并没有改动过,那么对propertyx的保存就不必要了
...
savepropertyn;
end;
Project经过Load之后,程序界面中对Project对象的每个属性进行显示,用户可对属性进行修改。
现在问题来了,如果用户之修改了其中的一个属性PropertyX,那么这个Save过程该如何写?
如果采用将所有的属性都重新存储一遍的方法则存储比较耗时(例如要经过TCP/IP连接存储到服
务器的一个文件的情况),如果只对PropertyX进行覆盖存储,则需纪录每个属性是否经过改变标记,
类会变得很大。
请问是否有一个较好的解决方法?