ich wollte Euch diesen Fund nicht vorenthalten !
Ich habe einen
XML Serializer auf Basis der
RTTI gefunden für Delphi !!
Das ist soooo schön
man kann einfach alle Properties einer Klasse, welche von TPersistent, und deren Properties als published deklariert sind, simpel speichern.
Es kann danach auch die Klasse um neue Properties erweitert werden.. Da es auf
XML basiert, kann man die alten Properties trotzdem noch laden! nix binär oder so ...
hier eine Erklärung:
http://blog.dragonsoft.us/2008/04/21...delphi-object/
Hier die Komponente:
http://www.dragonsoft.us/delphi_vcl.php
und hier die Anwendung:
Delphi-Quellcode:
unit ufrm_XMLSerialisierer;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, XMLSerializer;
type
TForm1 =
class(TForm)
xmls: TXMLSerializer;
btnSave: TButton;
btnLoad: TButton;
procedure btnSaveClick(Sender: TObject);
procedure btnLoadClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
TMyClass =
class(TPersistent)
private
FString :
string;
FNewDouble: Double;
published
property IchWillEinfachMalWasSpeichern :
String read FString
write FString;
property NochMehr : Double
read FNewDouble
write FNEwDouble;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnSaveClick(Sender: TObject);
var mc : TMyClass;
begin
mc := TMyClass.Create;
mc.IchWillEinfachMalWasSpeichern := '
Hallo';
xmls.XMLSettings.WellFormated := true;
xmls.SaveObject(mc, '
MyClass');
xmls.SaveToFile('
c:\test.txt');
mc.free;
end;
//==============================================================================
procedure TForm1.btnLoadClick(Sender: TObject);
var mc : TMyClass;
begin
mc := TMyClass.Create;
xmls.LoadFromFile('
c:\test.txt');
xmls.LoadObject(mc, '
MyClass');
ShowMessage(mc.IchWillEinfachMalWasSpeichern);
mc.free;
end;
end.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.