2010-03-05 19 views
4

Fondamentalement, le même que cette question, mais dans Delphi Prism:Cast int Enum dans Delphi Prism

Cast int to enum in C#

je parviens à le faire à partir d'une chaîne:

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

Mais j'ai essayé ce qui suit, et obtenir une erreur de type incompatibilité:

YourEnum := 3 as YourNum 

Toutes les idées que la syntaxe est f ou convertir int à Enum?

Répondre

3

@Robo, pour convertir le SINTAX un int Enum est

YourEnumVar := YourEnum(3); 

ou

YourEnumVar := Object(3) as YourEnum; 

voir cet exemple

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

Merci, une réponse très complète. – Robo