我知道如何将枚举类型转换为整数。
type
TMyType = (mtFirst, mtSecond, mtThird);
var
ordValue:integer;
enumValue:TMyType;
...
ordValue:= Ord(mtSecond); // result is 1
但是如何进行逆运算并将整数转换为枚举类型?
答案 0 :(得分:23)
肯肯回答说,你只是投了它。但为了确保您具有正确的价值,您可以使用以下代码:
if (ordValue >= Ord(Low(TMyType))) and (ordValue <= Ord(High(TMyType))) then
enunValue := TMyType(ordValue)
else
raise Exception.Create('ordValue out of TMyType range');
答案 1 :(得分:20)
您可以通过将类型转换为枚举类型来强制转换整数:
ordValue := Ord(mtSecond);
enumValue := TMyType(ordValue);
答案 2 :(得分:7)
注意强制转换,因为它需要使用序数类型和整数进行完全映射。例如:
type Size = (Small = 2, Medium = 3, Huge = 10);
var sz: Size;
...
sz := Size(3); //means sz=Medium
sz := Size(7); //7 is in range but gives sz=outbound