AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Integer in Enumeration umwandeln

Ein Thema von xZise · begonnen am 12. Sep 2007 · letzter Beitrag vom 12. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 16:13
Wie kann ich den Index einer Enumeration in eine Enumeration und wieder zurück umwandeln?
Delphi-Quellcode:
TEnum = (eFirst, eSecond, eThird);
Enum : TEnum;
Bei 0 sollte er in Enum "eFirst" stehen haben und so weiter.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 16:22
Delphi-Quellcode:
type TEnum = (rot, gruen, blau);
var Enum: TEnum;
    iIndex: integer;
begin
  Enum := TEnum(2);
  case Enum of
    rot: ShowMessage('rot');
    gruen: ShowMessage('grün');
    blau: ShowMessage('blau');
  end;
  iIndex := integer(TEnum(Enum));
  ShowMessage(inttostr(iIndex));
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 16:30
Und wenn ich jetzt ein Integer habe: Wie kriege ich den in die Numeration?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 16:40
Nach emum casten?

enumvar = TEnum(intvar);
  Mit Zitat antworten Zitat
Ghostwalker

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

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 16:49
Umwandlung Enum->Integer:

Delphi-Quellcode:
var
  idx : integer;

begin
  idx := ord(eSecond);
end;
Umwandlung Integer->Enum:

Delphi-Quellcode:
var
  enum : TEnum;
  idx : integer;

begin
  idx := 2;
  Enum := TEnum(idx);
end;
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#6

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 16:59
Naja, bis auf die Verwendung von Ord hatte ich das doch in meinem Beispiel. War das so missverständlich?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ghostwalker

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

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 17:04
Nein...hab das doch lediglich mal Zusammengefasst...so für den "Auf-Einen-Blick"-Gucker

Und ord ist hier die effizientere Methode, da der Cast wegfällt. Funktionieren sollten beide Varianten
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 17:09
Zitat von Ghostwalker:
Nein...hab das doch lediglich mal Zusammengefasst...so für den "Auf-Einen-Blick"-Gucker

Und ord ist hier die effizientere Methode, da der Cast wegfällt. Funktionieren sollten beide Varianten
falsch, ein Cast ist effizenter. Denn bei einem Cast wird dem Compiler verklickert wie er das Stück Speicher anzusehen hat. Ord hingegen ist eine Funktion. Und würde hier die Compilermagic nicht greifen (sofern sie das tut) würde bei einem Funktionsaufruf erst etwas auf den Stack gepackt etc.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 17:33
Hallo,

in dem Thread scheint es um das gleiche Thema zu gehen: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Integer in Enumeration umwandeln

  Alt 12. Sep 2007, 18:18
Zitat von SirThornberry:
(sofern sie das tut)
Tut sie, denn wie sollte Ord als normale Funktion aussehen (mal ganz abgesehen vom variablen Parameter- und Rückgabetyp)? Es könnte ja nicht viel Sinnvolleres drinstehen als einfach ein Cast, also kommt in der fertigen Übersetzung bei beiden Methoden der gleiche Asm-code heraus: überhaupt keiner (wie du für den harten Typecast ja schon gesagt hast).
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:44 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