![]() |
AW: Automatischer Setter/Getter für Aufzählungs-Variablen via RTTI?
Berücksichtige lieber das:
Zitat:
|
AW: Automatischer Setter/Getter für Aufzählungs-Variablen via RTTI?
Bei meinen JSON Schnittstellen mache ich ähnliches. Erstmal alles in Objekt Form bringen und dann diese Objekte verarbeiten. Dabei dienen diese Objekte nur der temporären Datenhaltung und zur Typumwandlung. Mit Enums verfahre ich so:
Delphi-Quellcode:
// uses System.RTTI, System.TypInfo;
// FFeld = String // TEnum = (enEins, enZwei, enDrei); { Getter } tmpType := TypeInfo(TEnum); // tmpType = PTypeInfo Result := TValue.FromOrdinal(tmpType, GetEnumValue(tmpType, 'en'+ FFeld)).AsType<TEnum>; { Setter } FFeld := TValue.From<TEnum>(Value).ToString; // Value = TEnum FFeld := Copy(FFeld, 3, Length(FFeld)); |
AW: Automatischer Setter/Getter für Aufzählungs-Variablen via RTTI?
Zitat:
Delphi-Quellcode:
type
TDataType = (dtString, dtInteger, dtFloat, dtCurrency, dtDate, dtBoolean); //erlaubt die Umwandlung von Aufzählungen in Strings und zurück TEnumHelper = class private FEnumInfo: PTypeInfo; FPrefix: string; public Constructor Create(AEnumTypeInfo: PTypeInfo; Prefix: string); function ToString(const EnumValue): string; function ToEnum(Name: string): integer; end; implementation //////////////////////////////////////////////////////////////////////////////// // // TEnumHelper // //////////////////////////////////////////////////////////////////////////////// constructor TEnumHelper.Create(AEnumTypeInfo: PTypeInfo; Prefix: string); begin FEnumInfo := AEnumTypeInfo; FPrefix := Prefix; end; function TEnumHelper.ToEnum(Name: string): integer; begin Name := FPrefix + Name; Result := GetEnumValue(FEnumInfo, Name); end; function TEnumHelper.ToString(const EnumValue): string; begin Result := GetEnumName(FEnumInfo, ord(TOrdType(EnumValue))); System.Delete(Result, 1, Length(FPrefix)); end;
Delphi-Quellcode:
//Erzeugen mit Angabe des Prefixes. Wird entfernt oder hinzugenommen.
var DataTypes : TEnumHelper; begin DataTypes := TEnumHelper.Create(TypeInfo(TDataType) , 'dt'); end; //Verwendung var DataTypeName: string; DataType: TDataType; begin DataType := TDataType(DataTypes.ToEnum(DataTypeName); DataTypeName := DataTypes.ToString(DataTypEnum); end; |
AW: Automatischer Setter/Getter für Aufzählungs-Variablen via RTTI?
smallie: Das sieht auch ganz interesant aus, vielen Dank!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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