I know how to convert an enumerated type to an integer.
type
TMyType = (mtFirst, mtSecond, mtThird);
var
ordValue:integer;
enumValue:TMyType;
...
ordValue:= Ord(mtSecond); // result is 1
But how do I do the inverse operation and convert an integer to an enumerated type?
As Ken answered, you just cast it. But to make sure you have correct value you can use code like:
if (ordValue >= Ord(Low(TMyType))) and (ordValue <= Ord(High(TMyType))) then
enunValue := TMyType(ordValue)
else
raise Exception.Create('ordValue out of TMyType range');
You can cast the integer by typecasting it to the enumerated type:
ordValue := Ord(mtSecond);
enumValue := TMyType(ordValue);
Take care with casting because it requires full mapping with your ordinal type and integers. For example:
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