指定された値を持つ列挙された型には、TypeInfoがありません、なぜですか? [複製
質問
この質問にはすでに答えがあります:
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までは、コンパイラの制限です。
所属していません StackOverflow