5

Delphi 2010では、任意の種類のインデックス付きプロパティ(たとえば、TPageControlのページなど)を反復処理する方法はありますか?

4

2 に答える 2

2

私があなたを正しく理解しているなら、あなたはプロパティとそのインデックス値について何も知らなくても、RTTIを介してこれらのプロパティを反復処理したいと思うでしょう。有効なインデックス値は整数値のシーケンスであってはならないため、これは不可能です。文字列インデックスまたはインデックス値としてのオブジェクト参照を持つプロパティが存在する場合があります。また、RTTIには、反復に使用できる有効なインデックス値を照会するメカニズムはありません。

于 2011-10-31T10:53:22.617 に答える
1

いいえ、これは不可能です。次のような標準パターンがないためです。

  • インデックスタイプを指定します
  • 使用するインデックスの開始値と終了値を指定します

これが、特定のクラスに列挙子がある理由です。これは、for...inステートメントに列挙する方法を指示するパターンです。

ただし、できることは最善の見積もりです。

  • ほとんどの場合、インデックスは整数です
  • ほとんどの場合、インデックスはゼロから始まります
  • ほとんどの場合、最終値を取得する方法を示すプロパティCountまたはLengthがあります

最後に、クラスヘルパー(または基になるタイプがレコードの場合はレコードヘルパー)を使用して、GetEnumertorでTPageControlを「後付け」することができます。

于 2011-10-31T15:06:49.260 に答える