E2148 ここには dymamic メッセージハンドラの指定はできません (Delphi)

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

エラーと警告のメッセージ(Delphi) への移動

動的メソッドとメッセージメソッドはプロパティ用のアクセス関数として使用できません。


program Produce;

  type
    Base = class
      v : Integer;
      procedure SetV(x : Integer); dynamic;
      function GetV : Integer; message;
      property Velocity : Integer read GetV write v;
      property Value : Integer read v write SetV;
    end;

  procedure Base.SetV(x : Integer);
  begin v := x;
  end;

  function Base.GetV : Integer;
  begin GetV := v;
  end;

begin
end.

{ この Velocity と Value はどちらも違法なアクセス関数が割り当てられているのでエラーになる }


program Solve;

  type
    Base = class
      v : Integer;
      procedure SetV(x : Integer);
      function GetV : Integer;
      property Velocity : Integer read GetV write v;
      property Value : Integer read v write SetV;
    end;

  procedure Base.SetV(x : Integer);
  begin v := x;
  end;

  function Base.GetV : Integer;
  begin GetV := v;
  end;

begin
end.

{ このコードではエラーを起こしたコンパイラ指令を手続き宣言から削除して解決したが,これが正しい解決方法であるとは限らない。プログラムの論理を詳しく調べて,プロパティにアクセス関数を指定する最善の方法を判別しなければならない場合もある }