E2140 メッセージメソッドのインデックスが重複しています (Delphi)

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

エラーと警告のメッセージ(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 つの解決方法がある。同じメッセージ値を使用する必要がなければ,メッセージ番号をユニークな番号に変更すればよい。あるいは,基本クラスから新しいクラスを派生させ,基本クラス内で宣言したメッセージハンドラの動作を変更してもよい。両方をこのコードに示す }