Einzelnen Beitrag anzeigen

EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#3

Re: Generischer Serialisierer

  Alt 12. Feb 2006, 20:29
Danke für die Antwort!

Ich kenne die Serialisierung von .NET (bin auch C#-Programmierer). Deshalb ist die Ähnlichkeit der Quellcodes kein Zufall!
Mir ist auch klar, dass ich in Delphi (mangels Runtime) nie so etwas wie die .NET Reflection haben werde.

Aber der Ansatz von Maximov mit dem generischen Serialisierer interessiert mich sehr. Leider ist mir da noch zu wenig Information dabei, und ich würde gerne wissen, wie das ganz genau funktionieren soll.

Meine Idee:
Wenn ich im ISerializable Interface die Funktion "GetObjectData" habe, bekomme ich schon mal die zu serialisierenden Daten, die ich dann mit dem ISerializable Interface schreiben kann.
Beim deserialisieren könnte ich ja mit dem Klassennamen eine Instanz erzeugen und wieder mit einer Funktion "WriteObjectData" des ISerializable Interfaces die ganzen Daten schreiben.

Genau das Erstellen eines Objektes basierend am Klassennamen habe ich noch nicht geschafft. Mein Ansatz:
Delphi-Quellcode:
var
  Obj : TObject;
  ClassName: String;
begin
  ...
  Obj := GetClass(ClassName).Create;
  if Obj is TButton then
    // Hier tritt dann eine Access-Violation auf:
    TButton(obj).Parent := self; //self = TForm
Interessant wäre hierbei auch noch, ob ich da ganz etwas anderes vorhabe, wie Maximov es vorgeschlagen hat, also ob ich seine Idee komplett missverstanden habe.

EDIT: Diese Lösung (TObjectList mit polimorphen Objecten zum Speichern) gefällt mir nicht, weil ich die zu speichernden Eigenschaften als published deklarieren muss. Ich möchte aber auch private-Felder speichern.

Danke,
Andreas
Andreas N.
  Mit Zitat antworten Zitat