整数を列挙型に変換するにはどうすればいいですか? 質問する

整数を列挙型に変換するにはどうすればいいですか? 質問する

列挙型を整数に変換する方法を知っています。

type
  TMyType = (mtFirst, mtSecond, mtThird); 

var 
  ordValue:integer;
  enumValue:TMyType;
...
ordValue:= Ord(mtSecond); // result is 1

しかし、逆の操作を行って整数を列挙型に変換するにはどうすればよいでしょうか?

ベストアンサー1

Ken が答えたように、キャストするだけです。ただし、正しい値であることを確認するには、次のようなコードを使用できます。

if (ordValue >= Ord(Low(TMyType))) and (ordValue <= Ord(High(TMyType))) then
    enunValue := TMyType(ordValue)
else 
    raise Exception.Create('ordValue out of TMyType range');

おすすめ記事