AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Prüfen ob Integer im Enumeration-Type enthalten ist
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob Integer im Enumeration-Type enthalten ist

Ein Thema von Keks · begonnen am 25. Jan 2015 · letzter Beitrag vom 27. Jan 2015
Antwort Antwort
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#1

AW: Prüfen ob Integer im Enumeration-Type enthalten ist

  Alt 25. Jan 2015, 17:46
k.A. wo der Debugger die Werte her holt, aber in der einkompilierten RTTI fehlt ganz einfach die Liste der Namen, sobald man selber die Werte zuweist.
Moment, aber ich brauche doch gar nicht die Namen, sondern nur die Zahlen-Werte!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Prüfen ob Integer im Enumeration-Type enthalten ist

  Alt 25. Jan 2015, 17:58
Es werden aber nicht die Zahlen gespeichert, sondern die Namen, in einem indizierten Array. (Index = Zahl )

Als Zahl ist alles im Wertebereich des Speichertyps gültig.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Jan 2015 um 18:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Prüfen ob Integer im Enumeration-Type enthalten ist

  Alt 25. Jan 2015, 18:06
Die einfachste Art ist doch hier
Delphi-Quellcode:
type
  TMeinBeispiel = ( mbEins, mbZwei, mbDrei );
const
  MeinBeispielValues : array[TMeinBeispiel] of integer = ( 0, 1, 5 );
Wenn man das jetzt noch in einen Record packt, der die Umwandlung vornimmt, dann hat man doch alles zusammen und kann nach Belieben hin- und her konvertieren und das auch noch voll automatisch.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#4

AW: Prüfen ob Integer im Enumeration-Type enthalten ist

  Alt 25. Jan 2015, 20:04
Sorry, aber irgendwie verstehe ich Dein Beispiel nicht ... oder ich stehe auf dem Schlauch.
MeinBeispielValues[mbDrei] = 5 aber was mache ich damit? Die Zuordnung Ord(mbDrei) = 5 hatte ich doch vorher schon?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Prüfen ob Integer im Enumeration-Type enthalten ist

  Alt 25. Jan 2015, 20:10
Nein.

Ord(mbDrei) = 2

Der Enum ist "einfach", besitzt eine vollständige RTTI, aber diehn nur der als Namensliste.
Die eigentlichen Werte sind aber extern abgelegt und werden nur für's Casten benutzt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Jan 2015 um 20:12 Uhr)
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#6

AW: Prüfen ob Integer im Enumeration-Type enthalten ist

  Alt 25. Jan 2015, 20:12
Ähm ...
Delphi-Quellcode:
type TMeinBeispiel = (mbEins=0, mbZwei=1, mbDrei=5);
begin
  ShowMessage(IntToStr(Ord(mbDrei))); // -> "5"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Prüfen ob Integer im Enumeration-Type enthalten ist

  Alt 25. Jan 2015, 20:29
Zitat:
Delphi-Quellcode:
type
  TMeinBeispiel = ( mbEins, mbZwei, mbDrei );
const
  MeinBeispielValues : array[TMeinBeispiel] of integer = ( 0, 1, 5 );


[edit]
"hatte" ... hatte "hab" gelesen.

Aber zusätzlich hast du so eben einen Code, wo man alle gültigen "Namen" auslesen kann und auch eine Liste (Array) mit allen gültigen Werten hat.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Jan 2015 um 20:36 Uhr)
  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 08:11 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