Как преобразовать целое число в перечислимый тип? - PullRequest
23 голосов
/ 04 января 2012

Я знаю, как преобразовать перечислимый тип в целое число.

type
  TMyType = (mtFirst, mtSecond, mtThird); 

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

Но как мне выполнить обратную операцию и преобразовать целое число в перечислимый тип?

Ответы [ 3 ]

24 голосов
/ 04 января 2012

Как ответил Кен, вы просто разыгрываете его.Но чтобы убедиться, что вы указали правильное значение, вы можете использовать такой код:

20 голосов
/ 04 января 2012

Вы можете привести целое число к типу перечислимого типа:

ordValue := Ord(mtSecond);
enumValue := TMyType(ordValue);
7 голосов
/ 27 декабря 2013

Будьте осторожны с приведением типов, потому что оно требует полного отображения с вашим порядковым типом и целыми числами.Например:

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
...