Huiuiui, da werden aber große Geschütze aufgefahren!
Ich dachte, mein Lösungsansatz (GetEnumName/GetEnumValue) sei zu umständlich und es müsse doch irgendwie einfacher gehen.
Aber bei Sir Rufos Lösung (Vielen Dank für die Mühe!) bin ich doch etwas baff.
Ich habe jetzt mal meinen Ansatz ausprobiert:
Delphi-Quellcode:
var
MeinBeispiel: TMeinBeispiel;
begin
MeinBeispiel := GetEnumMeinBeispielDefault(i);
...
function GetEnumMeinBeispielDefault(const value: Integer): TMeinBeispiel;
var
s: String;
i: Integer;
begin
s := GetEnumName(TypeInfo(TMeinBeispiel), value);
i := GetEnumValue(TypeInfo(TMeinBeispiel), s); //s enthält "Speichermüll", wenn value nicht in TMeinBeispiel, statt leer zu sein
if i>0 then
Result := TTrayAction(value)
else
Result := mbEins; //Default-Wert
end;
Aber das geht wohl nur, wenn TMeinBeispiel keine manuelle Indizes-Anpassung erhält, sonst "Type 'TMeinBeispiel' has no type info". Das ist wohl das, was himitsu meinte.
Wie gesagt war meine ursprüngliche Hoffnung, dass es sowas wie
if i in TMeinBeispiel then
geben müsste, deren Syntax mir nicht bekannt ist. Letztlich sind in der Aufwählung einige Werte manuell festgelegt (0,1,5) und ich möchte gegen diese einen anderen Wert vergleichen.