您可以繼承TPersistent,然後您可以使用TJvAppXMLFileStorage(JVCL)組件序列化TAlarm類。
保存對象
uses
JvAppXMLStorage;
Procedure SaveMyObject(MyAlarm : TAlarm)
var
MyStore: TJvAppXMLFileStorage;
begin
MyStore:= TJvAppXMLFileStorage.Create(nil);
try
MyStore.WritePersistent('', MyAlarm);
MyStore.Xml.SaveToFile('C:\MyAlarm.xml');
finally
MyStore.Free;
end;
end;
還原對象
uses
JvAppXMLStorage;
Procedure LoadMyObject(MyAlarm : TAlarm)
var
MyStore: TJvAppXMLFileStorage;
begin
MyStore:= TJvAppXMLFileStorage.Create(nil);
try
MyStore.FileName:='C:\MyAlarm.xml';
MyStore.Xml.LoadFromFile('C:\MyAlarm.xml');
MyStore.ReadPersistent('', MyAlarm);
finally
MyStore.Free;
end;
end;
UPDATE
如果你需要保留多個對象的X ML文件,您必須爲WritePersistent和ReadPersistent方法分配一個路徑(唯一ID)。
看到這個例子,
多堅持
Procedure SaveMyObjects(MyObjects : Array of TComponent);
var
MyStore: TJvAppXMLFileStorage;
i : integer;
begin
MyStore:= TJvAppXMLFileStorage.Create(nil);
try
for i := Low(MyObjects) to High(MyObjects) do
MyStore.WritePersistent(MyObjects[i].Name, MyObjects[i]); //In this case i use the name property of the component.
MyStore.Xml.SaveToFile('C:\Tools\MyAlarm.xml');
finally
MyStore.Free;
end;
end;
保存組件
SaveMyObjects([Button1,Button2,Edit1,Edit2]);
多個負載
Procedure LoadMyObjects(MyObjects:Array of TComponent);
var
MyStore : TJvAppXMLFileStorage;
i : integer;
begin
MyStore:= TJvAppXMLFileStorage.Create(nil);
try
MyStore.FileName:='C:\Tools\MyAlarm.xml';
MyStore.Xml.LoadFromFile('C:\Tools\MyAlarm.xml');
for i := Low(MyObjects) to High(MyObjects) do
MyStore.ReadPersistent(MyObjects[i].Name, MyObjects[i]);
finally
MyStore.Free;
end;
end;
要恢復性質
LoadMyObjects([Button1,Button2,Edit1,Edit2]);
另一種選擇加載
Procedure LoadMyObjectById(Id:String;MyObject:TComponent); //using the id of the object
var
MyStore : TJvAppXMLFileStorage;
i : integer;
begin
MyStore:= TJvAppXMLFileStorage.Create(nil);
try
MyStore.FileName:='C:\Tools\MyAlarm.xml';
MyStore.Xml.LoadFromFile('C:\Tools\MyAlarm.xml');
MyStore.ReadPersistent(id, MyObject);
finally
MyStore.Free;
end;
end;
你必須運行這種方式
LoadMyObjectById(Button1.Name,Button1); //Again using the Name property.
我希望這個例子將是有益的; )
您需要提供更多信息。 TAlarm基於什麼類型?你需要存儲什麼? – 2009-11-02 19:32:17
詢問更多信息的原因是,你應該如何堅持事情取決於你想要保存的是什麼。例如,如果您需要存儲的只是報警的日期和時間以及報警內容的描述,則可以將其保存在INI文件中,而不必存儲班級的所有其他部分。但是,如果您的需求比這更復雜,那麼以某種方式存儲整個班級可能會更好。不知道更多,很難爲你提供一個很好的答案。 – 2009-11-02 19:42:22
對不起。現在,您在我的問題中有了新的信息。我希望有所幫助。我喜歡你的幫助。 – DelphiProgrammer 2009-11-03 13:36:05