E2179 OLE オートメーション部にはレジスタ渡し規約しか許されません (Delphi)

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

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

クラス宣言の automated 部の中にあるメソッドに対して,違法な呼び出し規約を指定しました。


program Produce;

  type
    Base = class
    automated
      procedure Method; cdecl;
    end;

  procedure Base.Method; cdecl;
  begin
  end;

begin
end.

{ 言語の仕様上,OLE オートメーション部では register 以外の呼び出し規約は使用できない。このコードでは cdecl 指令がエラーを起こしている }


program Solve;

  type
    Base = class
    automated
      procedure Method; register;
      procedure Method2;
    end;

  procedure Base.Method; register;
  begin
  end;

  procedure Base.Method2;
  begin
  end;

begin
end.

{ このエラーの解決方法は 3 つある。1 つは automated 部内で宣言したメソッドに対しては呼び出し規約を指定しない方法である。2 番めの方法は register 呼び出し規約だけを指定する方法である。3 番めの方法はエラーを起こした宣言をオートメーション部の外へ出す方法である }