Hallo,
ich verwende häufig einfache Klassen auf Basis von TPersistent mit einfachen Datentypen. Hauptsächlich als Basis für Assign und Streamen. Da ich die Assign- und Streeaming Methoden immer manuell erstellen musste habe ich mir beiliegende Klasse TPersistenEx ausgedacht.
Ich bitte Interessierte um Kommentar und Optimierungsvorschläge.
Beispielcode zur Verwendung:
Delphi-Quellcode:
TTestObject1 = Class(TPersistentEx)
private
FRechner: Double;
published
property Rechner: Double read FRechner write FRechner;
End;
TTestObject2 = Class(TPersistentEx)
private
FName: String;
FAlter: Integer;
FTestObject1: TTestObject1;
public
constructor Create;
destructor Destroy; override;
published
property Name: String read FName write FName;
property Alter: Integer read FAlter write FAlter;
property TestObject1: TTestObject1 read FTestObject1 write FTestObject1;
End;
procedure TForm1.Button3Click(Sender: TObject);
var
TestObject : TTestObject2;
TestObject2 : TTestObject2;
m : TMemoryStream;
begin
TestObject := TTestObject2.Create;
TestObject2 := TTestObject2.Create;
m := TMemoryStream.Create;
try
with TestObject do begin
FTestObject1.Rechner := 99.7;
FName := 'Hallo';
FAlter := 45;
end;
with TestObject2 do begin
FTestObject1.Rechner := -6.7;
FName := '';
FAlter := -1;
end;
TestObject.AssignTo(TestObject2);
TestObject.ToStream(m);
m.Position := 0;
TestObject2.FromStream(m);
finally
m.Free;
TestObject.Free;
TestObject2.Free;
end;
end;
Zusätzlich noch die Frage weiß jemand wie man
If (Object is TPersistentExList<T : TPersistentEx, constructor>) ...
lösen kann?
Grüße Michael