E2185 オーバーライドしたオートメーション仮想メソッド '%s' の dispid が異なります (Delphi)

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

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

派生クラス内でオーバーライドするすべての手続きは,元の仮想 automated 手続き宣言用に宣言された dispid を使用しなければなりません。


program Produce;

  type
    Base = class
    automated
      procedure Automatic; virtual; dispid 151;
    end;


    Derived = class (Base)
    automated
      procedure Automatic; override; dispid 152;
    end;

  procedure Base.Automatic;
  begin
  end;

  procedure Derived.Automatic;
  begin
  end;

begin
end.

{ Derived 内にある Base.Automatic のオーバーライド宣言(Derived.Automatic)が手続き用に別の dispid を定義しようとしているのが誤りである }


program Solve;

  type
    Base = class
    automated
      procedure Automatic; virtual; dispid 151;
    end;


    Derived = class (Base)
    automated
      procedure Automatic; override;
    end;

  procedure Base.Automatic;
  begin
  end;

  procedure Derived.Automatic;
  begin
  end;

begin
end.

{ エラーを起こした dispid 節を削除すれば,このプログラムをコンパイルできる }