Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigene Typen nach Integer casten? (https://www.delphipraxis.net/148134-eigene-typen-nach-integer-casten.html)

TheMiller 23. Feb 2010 12:41


Eigene Typen nach Integer casten?
 
Hallo,

ich habe eigene Typen wie den folgenden erstellt:

Delphi-Quellcode:
TPJUpdateEvents = (ueUserlist, ueAufgaben, ueTermine, ueNachrichten);
Ich habe i-wo gelesen, dass Delphi bzw. der Compiler dahergeht und der Reihe nach jedem Wert eines Typen einen Integer-Wert beginnend bei 0 zuordnet. An diese Wert würde ich gerne durch einen Cast rankommen.

Mein Ziel ist es, in der Datenbank den Integer-Wert des Typen-Wertes zu speichern und nur im Quelltext die TypenNamen zu nutzen. In der DB sollte für "ueAufgaben" also eine 1 stehen.

Momentan prüfe ich noch mit if-Abfragen und übersetze quasi den Typ in den entsprechenden Wert - das ist nicht gerade eine Vereinfachung.

Danke im Voraus

s.h.a.r.k 23. Feb 2010 12:46

Re: Eigene Typen nach Integer casten?
 
Ein kleiner Tipp vorweg, nimm doch ein case anstatt der if-Schleifen ;)

Ansonsten kannst du wunderbar mit der Ord()-Funktion arbeiten.

Bernhard Geyer 23. Feb 2010 12:47

Re: Eigene Typen nach Integer casten?
 
Einfach mit Ord() den Ordinalwert bestimmen

TheMiller 23. Feb 2010 12:49

Re: Eigene Typen nach Integer casten?
 
Ja super. Die Funktion nutze ich so selten, dass ich garnicht mehr an sie gedacht habe.

Vielen Dank.

s.h.a.r.k 23. Feb 2010 12:49

Re: Eigene Typen nach Integer casten?
 
Schöner finde ich aber die Methode, die aus dem Wert ueUserlist einen String macht, nur finde ich dieser gerade nicht :wall: Somit werden die Werte lesbarer abgespeichert, wie ich finde.

Bbommel 23. Feb 2010 12:59

Re: Eigene Typen nach Integer casten?
 
Delphi-Quellcode:
function UpdateEventsToString(UpdateEvent:TPJUpdateEvents):string;
begin
  Result:=GetEnumName(TypeInfo(TPJUpdateEvents), Integer(UpdateEvent));
end;
Autor unbekannt :) - hatte ich auch mal irgendwann hier gefunden.

Bis denn
Bommel

uligerhardt 23. Feb 2010 13:59

Re: Eigene Typen nach Integer casten?
 
Zitat:

Zitat von s.h.a.r.k
Ein kleiner Tipp vorweg, nimm doch ein case anstatt der if-Schleifen ;)

Klick :mrgreen:

TheMiller 24. Feb 2010 10:20

Re: Eigene Typen nach Integer casten?
 
Vielen Dank nochmals für die Tipps.

Kann ich auch andersrum casten? Ich bekomme aus der DB den Wert 1 und möchte jetzt das entsprechende "TPJUpdateEvent" bekommen. Gibt's da auch eine Möglichkeit?

Danke

Bbommel 24. Feb 2010 10:24

Re: Eigene Typen nach Integer casten?
 
Zitat:

Zitat von DJ-SPM
Kann ich auch andersrum casten?

Klar, einfach
Delphi-Quellcode:
myUpdateEvent=TPJUpdateEvents(myIntegerValue);
nehmen.

Bis denn
Bommel

TheMiller 24. Feb 2010 10:25

Re: Eigene Typen nach Integer casten?
 
Perfekt. Vielen Dank

generic 24. Feb 2010 15:40

Re: Eigene Typen nach Integer casten?
 
Zitat:

Zitat von s.h.a.r.k
Ein kleiner Tipp vorweg, nimm doch ein case anstatt der if-Schleifen ;)

http://if-schleife.de/

uligerhardt 24. Feb 2010 16:43

Re: Eigene Typen nach Integer casten?
 
Zitat:

Zitat von generic
Zitat:

Zitat von s.h.a.r.k
Ein kleiner Tipp vorweg, nimm doch ein case anstatt der if-Schleifen ;)

http://if-schleife.de/

http://www.delphipraxis.net/internal...132959#1132959

TheMiller 24. Feb 2010 16:50

Re: Eigene Typen nach Integer casten?
 
Nicht, dass das hier jetzt zu einer Endlosschleife wird :wink:

uligerhardt 24. Feb 2010 16:56

Re: Eigene Typen nach Integer casten?
 
Zitat:

Zitat von DJ-SPM
Nicht, dass das hier jetzt zu einer Endlosschleife wird :wink:

Was ist denn eineEndlosschleife?

BUG 24. Feb 2010 16:57

Re: Eigene Typen nach Integer casten?
 
Zitat:

Zitat von s.h.a.r.k
Ein kleiner Tipp vorweg, nimm doch ein case anstatt der if-Schleifen ;)

If-Schleife = While + If = Case :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz