AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Seriallisieren/Deseriallisieren von Enums via RTTI
Thema durchsuchen
Ansicht
Themen-Optionen

Seriallisieren/Deseriallisieren von Enums via RTTI

Ein Thema von Ghostwalker · begonnen am 10. Mai 2017 · letzter Beitrag vom 10. Mai 2017
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#1

AW: Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 13:13
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 ?
Wenn du weißt, daß der Typ TMyEnum01 ist, dann sollte es einfach so gehen:

  value := TValue.From<TMyEnum01>(TRttiEnumerationType.GetValue<TMyEnum01>('me1A'));
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Ghostwalker

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

AW: Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 13:27
@TiGü
Nein, leider nicht (btw. auch kein DBExpress )

@Uwe
Jo, dann müsst ich aber eine Case machen (für jeden Enum-Typ).

Den Typ hab ich als String (weil ja aus Datei) vorliegen.

und bei

Delphi-Quellcode:
var
  tenumtypename : string;

begin
  value := TValue.From<tenumtypename>(TRttiEnumerationType.GetValue<tenumtypename>('me1A'));
end;
zeigt sich der Compiler leider von der störrischen Seite
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 13:48
Wie wäre es, wenn du Enums einfach genauso wie andere Ordinal-Typen behandelst? Sprich: Die Werte als Zahl abspeichern/auslesen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Ghostwalker

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

AW: Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 15:05
Würde nix daran ändern. Früher oder Später muss ich auf den entsprechenden Enum-Type (den ich aber nur als String hab).


Edit:

Ok....es ändert sehr viel, wenn man das ganze mal richtig betrachtet Ich muss nur anhand des Enum-Type die
Größe feststellen und das ganze entsprechend casten (Byte,word..).
Uwe
e=mc² or energy = milk * coffee²

Geändert von Ghostwalker (10. Mai 2017 um 15:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#5

AW: Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 16:04
Würde nix daran ändern. Früher oder Später muss ich auf den entsprechenden Enum-Type (den ich aber nur als String hab).
Ich kenne bislang auch keine Möglichkeit von einem String auf einen Enum-Type zu kommen, außer man hat den Namen der Unit, in der er deklariert ist. Dann könnte das so gehen:
Delphi-Quellcode:
var
  context: TRttiContext;
  rtype: TRttiType;
  value: TValue;
begin
  context := TRttiContext.Create;
  rtype := context.FindType('<unitname>.TMyEnum01');
  value := TValue.FromOrdinal(rtype.Handle, GetEnumValue(rType.Handle, 'me1A'));
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#6

AW: Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 16:38
Ich muss nur anhand des Enum-Type die
Größe feststellen und das ganze entsprechend casten (Byte,word..).
Delphi-Referenz durchsuchenOrd
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Ghostwalker

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

AW: Seriallisieren/Deseriallisieren von Enums via RTTI

  Alt 10. Mai 2017, 19:04
@Uwe

Jup....dat tut super und vielen Dank
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:51 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