E2096 メソッド識別子が必要です (Delphi)
エラーと警告のメッセージ(Delphi) への移動
このエラーメッセージは以下のような場合に表示されます。
- automated 部内のプロパティがアクセス用のメソッドを使用しなければならず,read 節または write 節の中のフィールドを使用できない
- 「ClassType.MethodName」の構文を使ってクラスメソッドを呼び出そうとしたが,「MethodName」がメソッド名でなかった
- 「inherited MethodName」の構文を使って継承メソッドを呼び出そうとしたが,「MethodName」がメソッド名でなかった
program Produce; type TMyBase = class Field: Integer; end; TMyDerived = class (TMyBase) Field: Integer; function Get: Integer; Automated property Prop: Integer read Field; (*<-- ここでエラーメッセージ*) end; function TMyDerived.Get: Integer; begin Result := TMyBase.Field; (*<-- ここでエラーメッセージ*) end; begin end.
{ このコードはフィールドに直接アクセスする Automated プロパティを宣言しようとしている。2 番めのエラーは基本クラスのフィールドを取得しようとしたのが原因である }
program Solve; type TMyBase = class Field: Integer; end; TMyDerived = class (TMyBase) Field: Integer; function Get: Integer; Automated property Prop: Integer read Get; end; function TMyDerived.Get: Integer; begin Result := TMyBase(Self).Field; end; begin Writeln( TMyDerived.Create.Prop ); end.
{ 最初の問題はメソッドを通してフィールドにアクセスすれば解決できる。2 番めの問題は Self ポインタを基本クラス型へキャストし,そこからフィールドにアクセスすれば解決する }