Einzelnen Beitrag anzeigen

Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 11:22
Delphi-Version: 5
MoinMoin,

ich bin gerade drüber, mir eine (möglichst Allgemeingültige und flexible) Lösung zu bauen, um Optionen/Einstellungen eines Programmes zu speichern (ich weiß...gibts in 20002 mögliche Varianten )

Plan:

Die App definiert sich eine Klasse (oder einen Record) für die ganzen Optionen/Einstellungen.

Ein Objekt nimmt die Klasse/Record und seriallisiert/deseriallisiert das ganze in eine Datei (Format steht derzeit nicht fest). Dazu wird, via RTTI, für jede Property der Options-Klasse ein, ich nenn es mal Field-Objekt
erzeugt, das die Informationen wie Typ, Value usw. enthält.

Delphi-Quellcode:
  TAbsField = class(TPersistent)
    private
       fname : Unicodestring;
       fvalue: TValue;
       fseperator : UnicodeString;
       ftype : Unicodestring;
    protected

       function GetType:TTypeKind;
    public
       constructor Create(Seperator:Unicodestring=';');
       procedure Assign(source:TPersistent);
       function SerializeToString:UnicodeString;virtual;
       procedure DeserializeFromString(aString:UnicodeString);virtual;
    published
       property Kind : TTypekind read GetType;
       property Name : UnicodeString read fname write fname;
       property Value : TValue read fvalue write fvalue;
       property Typename: Unicodestring read ftype write ftype;
       Property Seperator : UnicodeString read fseperator write fseperator;

  end;
Seriallisiert sieht so ein Objekt so aus:
Code:
   :
   tkInteger,"Integer","Wert",42
   :
Problem ist nun, wie ich das ganze mit Enums mache. Seriallisiert sieht das ganze derzeit so aus:

Code:
  :
  tkEnumeration,"TMyEnum01","MyEnum1","me1A"
  :
Bein Einlesen steh ich aber vor dem Problem, wie ich nun aus den Infos wieder ein TValue (oder TMyEnum01) mache, um das in der Field-List reinbekomme. Hat da jemand ne Idee ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat