Für Emums man man maximal in der
RTTI abfragen was der größte Wert ist, aber nur, wenn das ein Enum ohne Wertdefinitionen ist, denn dann gibt es in der
RTTI keine Namensliste.
Also gerade dein Beispiel ist so nicht und niemals lösbar.
Zitat:
type TMeinBeispiel = (mbEins=0, mbZwei=1, mbDrei=5);
Nur ohne "=", also bei
type TMeinBeispiel = (mbEins, mbZwei, mbDrei);
existiere vollständige
RTTI-Infos.
Ansonsten kann man nur den maximalen Wertebereich prüfen und nichts die einzelnen "Werte".
für Enums: 0..255, 0..65535 oder 0..4294967295
für Sets: 0..7, 0..15, 0..31, 0..63, ... bis maximal 0..255
Der Compiler rundet alles auf den nächst größeren kleinstmöglichen Speichertypen, also bei deinem TMeinBeispiel (als Enum) ist das genau ein Byte und somit passt in den Typen grundsätzlich erstmal alles rein, von 0 bis 255 und als Set 0 bis 7.
Zitat:
Muss ich den unschönen Umweg über GetEnumName/GetEnumValue gehen oder gibt es eine elegantere Lösung?
Das hast du vermutlich noch nicht probiert, denn bei deinem TMeinBeispiel ergibt das eine geile
Exception. (und mein Lösungsvorschlag, für das Problem, wurde vor vielen Jahren schon ignoriert)