E2140 メッセージメソッドのインデックスが重複しています (Delphi)
エラーと警告のメッセージ(Delphi) への移動
動的メソッドに指定したインデックスが,すでに別の動的メソッドで使用されています。
program Produce; type Base = class procedure First(VAR x : Integer); message 151; procedure Second(VAR x : Integer); message 151; end; procedure Base.First(VAR x : Integer); begin end; procedure Base.Second(VAR x : Integer); begin end; begin end.
{ Second の宣言は First が使用しているのと同じメッセージインデックスを再度使用しようとしている }
program Solve; type Base = class procedure First(VAR x : Integer); message 151; procedure Second(VAR x : Integer); message 152; (*一意のインデックスに変更する*) end; Derived = class (Base) procedure First(VAR x : Integer); override; (*基本クラスの動作をオーバーライドする*) end; procedure Base.First(VAR x : Integer); begin end; procedure Base.Second(VAR x : Integer); begin end; procedure Derived.First(VAR x : Integer); begin end; begin end.
{ この問題には直接的な 2 つの解決方法がある。同じメッセージ値を使用する必要がなければ,メッセージ番号をユニークな番号に変更すればよい。あるいは,基本クラスから新しいクラスを派生させ,基本クラス内で宣言したメッセージハンドラの動作を変更してもよい。両方をこのコードに示す }