E2148 ここには dymamic メッセージハンドラの指定はできません (Delphi)
エラーと警告のメッセージ(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.
{ このコードではエラーを起こしたコンパイラ指令を手続き宣言から削除して解決したが,これが正しい解決方法であるとは限らない。プログラムの論理を詳しく調べて,プロパティにアクセス関数を指定する最善の方法を判別しなければならない場合もある }