implementation  Uses TypInfo;

procedure TForm3.FormCreate(Sender: TObject);
//定义枚举类型
type
  TDayOfWeek=(Monday,Tuesday,Wednesday,Thursday,FriDay,Saturday,Sunday);
var
  s: string;
  aWeek:TDayOfWeek;
begin           
ShowMessage('枚举字符串:' + GetEnumName(TypeInfo(TDayOfWeek),      0)   );
ShowMessage('枚举字符串:' + GetEnumName(TypeInfo(TDayOfWeek),Ord(Monday)));
   aWeek:=Monday;
ShowMessage('枚举字符串:' + GetEnumName(TypeInfo(TDayOfWeek),Ord(aWeek)));
end;

GetEnumName(TypeInfo( System.TTypeKind), ord( pMethod.ReturnType.TypeKind));

遍历枚举

对于枚举类型,Low 返回枚举的第一个值,而 High 返回枚举的最后一个值。你可以使用这两个函数来遍历枚举的所有值。

type
  TMyEnum = (Value1, Value2, Value3);
var
  enumValue: TMyEnum;
begin
  for enumValue := Low(TMyEnum) to High(TMyEnum) do
  begin
    // 在这里处理枚举值 enumValue
    WriteLn(GetEnumName(TypeInfo(TMyEnum), Integer(enumValue)));
  end;
end;

在这个例子中,enumValue 将依次取 TMyEnum 类型的 Value1Value2 和 Value3 这三个值。