Vous pouvez hériter de TPersistent, puis vous pouvez utiliser le composant TJvAppXMLFileStorage (JVCL) pour sérialiser la classe TAlarm.
Enregistrer un objet
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;
Restaurer un objet
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;
MISE À JOUR
Si vous devez persister plus d'un objet à l'X Fichier ML vous devez affecter un chemin (identifiant unique) aux méthodes WritePersistent et ReadPersistent.
Voir cet exemple,
multiples persist
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;
pour enregistrer les composants
SaveMyObjects([Button1,Button2,Edit1,Edit2]);
multiples CHARGE
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;
Pour restaurer les propriétés
LoadMyObjects([Button1,Button2,Edit1,Edit2]);
Une autre option pour charger
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;
vous devez exécuter cette façon
LoadMyObjectById(Button1.Name,Button1); //Again using the Name property.
J'espère que cet exemple sera utile;)
Vous devez fournir plus d'informations. De quel type est basé TAlarm? Qu'est-ce que vous avez exactement besoin de stocker? –
La raison de demander plus d'informations est que la façon dont vous devez persister dépend de ce que vous essayez d'économiser. Si, par exemple, tout ce que vous avez besoin de stocker est la date et l'heure d'une alarme et une description de l'objet de l'alarme, vous pouvez l'enregistrer dans un fichier INI sans stocker toutes les autres parties d'une classe. Cependant, si vos besoins sont plus complexes, il peut être préférable de stocker toute la classe. Sans en savoir plus, il est difficile de vous fournir une bonne réponse. –
Désolé l'homme. Maintenant, tout ce que vous avez de nouvelles informations dans ma question. J'espère que ça aide. J'apprécie votre aide. – DelphiProgrammer