delphi - 在 Delphi Prism 中将 int 转换为 Enum

标签 delphi delphi-prism enumerable oxygene

与这个问题基本相同,但在 Delphi Prism 中:

Cast int to enum in C#

我设法从字符串中做到这一点:

YourEnum := Enum.Parse(TypeOf(YourEnum), "mystr") as YourEnum

但是我尝试了以下操作,并收到类型不匹配错误:

YourEnum := 3 as YourNum

知道将 int 转换为 Enum 的语法是什么吗?

最佳答案

@Robo,将 int 转换为 Enum 的语法是

YourEnumVar := YourEnum(3);

YourEnumVar := Object(3) as YourEnum;

查看此示例

namespace ConsoleAppEnumsDelphiPrism;

interface

type
  Language = (Delphi=1,Delphi_Prism,CBuilder);

  ConsoleApp = class
  public
    class method Main;
  end;

implementation

class method ConsoleApp.Main;
var
    MyEnum : Language;
begin
  // String to Enum
  MyEnum := Language(Enum.Parse(typeof(Language), 'Delphi_Prism'));
  Console.WriteLine(MyEnum.ToString());//Print Delphi_Prism

  // Int to Enum
  MyEnum:=Language(2);
  Console.WriteLine(MyEnum.ToString());//Print Delphi_Prism

  // Int to Enum using "as"   
  MyEnum:= Object(1) as Language;
  Console.WriteLine(MyEnum.ToString());//Print Delphi

  Console.ReadKey();
end;

end.

关于delphi - 在 Delphi Prism 中将 int 转换为 Enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2383718/

相关文章:

ruby - 如何 to_enum( :method) receive its block here?

Ruby 删除可枚举列表中的重复项

delphi - 如何使用可变参数打印字符串?

delphi - TForm 上的 RTTI GetFields 和 GetAttributes

delphi - Delphi Prism 中 TList 的替代品。

.net - 有没有办法将 Delphi 2010 表单迁移到 Delphi Prism (.Net) XE 表单?

c# - 在 C# 中使用在 Delphi 7 中编译的 DLL

delphi - FMX Delphi 10.2 在执行任务时显示表单或请等待面板

xml - 如何从 Delphi Prism 中的 XML 模式生成 Pascal 代码?

ruby - 为什么 Enumerable#detect 需要 Proc/lambda?