AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Set of Enumeration Type in Datenbank-Parameter zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Set of Enumeration Type in Datenbank-Parameter zuweisen

Ein Thema von RP12Biker · begonnen am 10. Jun 2014 · letzter Beitrag vom 12. Jun 2014
 
Benutzerbild von smallie
smallie

Registriert seit: 8. Jan 2013
19 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Set of Enumeration Type in Datenbank-Parameter zuweisen

  Alt 12. Jun 2014, 22:35
Das mit der Helper-Klasse hätte ich wohl schon gemacht, wenn im rechten Teil des Helpers auch ein generischer Typ angegeben werden könnte Ich habe bisher drei unterschiedliche Typen von "FLAGS", je nachdem in welchem Objekt. Und jedem Set sein eigenes Helper-Objekt an die Seite zu stellen mit dreimal dem gleichen Quellcode bis auf den Typ
Ich mach' das so:

Delphi-Quellcode:
uses
  TypInfo;

type
  TEnumHelper = class
  private
    FEnumInfo: PTypeInfo;
  public
    Constructor Create(AEnumInfo: PTypeInfo);
    function ToString(const EnumValue): string; //typloser Parameter
    function ToEnum(const Name: string): integer;
  end;


implementation

constructor TEnumHelper.Create(AEnumInfo: PTypeInfo);
begin
  FEnumInfo := AEnumInfo;
end;

function TEnumHelper.ToString(const EnumValue): string;
begin
  Result := GetEnumName(FEnumInfo, ord(TOrdType(EnumValue))); //typloser Parameter wird gecastet
end;


function TEnumHelper.ToEnum(const Name: string): integer;
begin
  Result := GetEnumValue(FEnumInfo, Name);
end;
So läßt sich damit arbeiten:

Delphi-Quellcode:
//Enumeration:
TTasteBuds = (tbSour, tbSweet, tbSalty, tbSpicey, tbUmami)

//Erzeugung und Verwendung
TasteBuds := TEnumHelper.Create(TypeInfo(TTasteBuds));
showMessage(TasteBuds.ToString(tbSour)); //"tbSour"

//oder andere Richtung
var SomeTasteBud: TTasteBuds;

SomeTasteBud := TTasteBuds(TasteBuds.ToEnum(tbSour)); //hier muß zurückgecastet werden. :(
Auf eine Lösung, wie ich diesen letzten Cast einsparen kann, bin ich noch nicht gekommen. Wenn nur eine Zahl herauskommen soll, passt es.
"There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors."
  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 09:19 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