0

重複の可能性:
列挙型で「typehasnotypeinfo」エラーが発生するのはなぜですか

私はこのようなプロパティを持つコンポーネントを持っています:-

enum class Foo {VAL0, VAL1, VAL2, VAL4 =4};

class TDummy : public TComponent
{
...
  Foo f;
  TDummy() : f(Foo:VAL2) {};

__published: 
  __property Foo foo{ read = f, write = f};
}

ただし、インストールすると、IDEオブジェクトインストラクターは「foo」の選択肢のドロップダウンリストを表示せず、値「2」を含む編集フィールドを表示するだけです。

IDEに「2」ではなく「VAL2」を表示させ、VAL0 / VAL1 / VAL2などの選択肢のドロップダウンリストを表示するにはどうすればよいですか?

4

1 に答える 1

1

これは、列挙値が連続していないためです。enum 宣言を次のように変更します。

enum class Foo {VAL0, VAL1, VAL2, VAL4 =4};

...に...

enum class Foo {VAL0, VAL1, VAL2, VAL3, VAL4};

また、プロパティはオブジェクト インスペクターで正しく機能します。もちろん、VAL3 を選択できるようになりましたが、これは理想的ではありません。

Delphi は連続しない列挙型をサポートしていないため、RTTI が連続しない値のセットを表すことはできません。

于 2012-05-10T16:29:03.217 に答える