指定された値を持つ列挙された型には、TypeInfoがありません、なぜですか? [複製

StackOverflow https://stackoverflow.com/questions/3054444

  •  27-09-2019
  •  | 
  •  

質問

この質問にはすでに答えがあります:

Delphi 2007を使用して、次のコードを書くことができます。

interface
TTestType = (ttTest1, ttTest2);

procedure enumName;
var
  EnumName: String;
begin
  EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1));
end;

これにより、eNumnameが関数の最後に「tttest1」が含まれています。

ただし、ttestTypeをこのようなものに変更すると:

interface
TTestType = (ttTest1=1, ttTest2=2);

私のコードは突然コンパイルされなくなりました。 [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info

これで、列挙名で文字列のconst配列を作成できますが、これは汚れた解決策だと思います。誰かが私を正しい方向に向けることができますか、それとも私はここで不可能なことを試みていますか?

役に立ちましたか?

解決

スニペットに違いはありませんが、「ttype =(x = 1、y = 2);」のようなことをしたと仮定します。これにより、DelphiがRTTINFOLMATIONを生成することができなくなります。少なくともD2010までは、コンパイラの制限です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top