私は、列挙型を整数に変換する方法を知っています。整数を列挙型に変換するにはどうすればよいですか?
type
TMyType = (mtFirst, mtSecond, mtThird);
var
ordValue:integer;
enumValue:TMyType;
...
ordValue:= Ord(mtSecond); // result is 1
は、しかし、どのように、私は逆の操作を行うと、列挙型の整数に変換するのですか?
私は、列挙型を整数に変換する方法を知っています。整数を列挙型に変換するにはどうすればよいですか?
type
TMyType = (mtFirst, mtSecond, mtThird);
var
ordValue:integer;
enumValue:TMyType;
...
ordValue:= Ord(mtSecond); // result is 1
は、しかし、どのように、私は逆の操作を行うと、列挙型の整数に変換するのですか?
が、あなたはそれをキャスト。しかし、あなたはあなたのようなコードを使用することができ、正しい値ていることを確認する:それはあなたの順序型と整数との完全なマッピングを必要とするため、鋳造に注意してください
if (ordValue >= Ord(Low(TMyType))) and (ordValue <= Ord(High(TMyType))) then
enunValue := TMyType(ordValue)
else
raise Exception.Create('ordValue out of TMyType range');
あなたは列挙型に型キャストによって、整数をキャストすることができます:ケンは答えたよう
ordValue := Ord(mtSecond);
enumValue := TMyType(ordValue);
ああ、はい...ありがとう、私はそれが何か自明であることを知っていた... :-) – lyborko
を。例えば:
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
タイプ TMyType =(mtFirst = 1、mtSecond = 2、mtThird = 3)。 var ordValue:整数。 enumValue:TMyType; ordValue:=整数(mt秒); //結果は2 –