AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Generischer Serialisierer

Ein Thema von EConvertError · begonnen am 12. Feb 2006 · letzter Beitrag vom 26. Feb 2006
 
EConvertError

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

Re: Generischer Serialisierer

  Alt 12. Feb 2006, 19: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz