E2147 プロパティ '%s' は基本クラスに存在しません (Delphi)
エラーと警告のメッセージ(Delphi) への移動
コンパイラは開発者がプロパティを派生クラスの別の可視性レベルまで引き上げる意図であると判断しましたが,指定されたプロパティが基本クラス内に存在しません。
program Produce; type Base = class private a : Integer; property BaseProp : integer read a write a; end; Derived = class (Base) ch : Char; property Alpha read ch write ch; (*ケース 1*) property BesaProp; (*ケース 2*) end; begin end.
{ このエラーには根本的な原因が 2 つある。1 つは型を指定せずに新しいプロパティを指定した場合で,通常これは新しい可視性レベルへの移動とは考えられない。もう 1 つは基本クラス内に存在するはずのプロパティを指定してコンパイラがそれを見つけられない場合で,最も可能性の高い原因は "BesaProp" のような単純なタイプミスである。2 番めの形態でもコンパイラは read 節か write 節が必要だというエラーを出力する
program Solve; type Base = class private a : Integer; property BaseProp : integer read a write a; end; Derived = class (Base) ch : Char; public property Alpha : Char read ch write ch; (*ケース 1*) property BaseProp; (*ケース 2*) end; begin end.
{ 最初の例ではプロパティの型を指定すれば解決する。2 番めの例ではプロパティ名のスペルをチェックすれば解決する }