E2147 プロパティ '%s' は基本クラスに存在しません (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(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 番めの例ではプロパティ名のスペルをチェックすれば解決する }