0

我收到一个错误:

[DCC 错误] Test.pas(10): E2291 缺少接口方法 ICoTest64.MyFunc 的实现

下面是 TLB 文件的一个片段。

// *********************************************************************//
// Interface: ICoTest64
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {76CF78FE-22A3-4C0B-B1A9-97634A453AE3}
// *********************************************************************//
  ICoTest64 = interface(IDispatch)
    ['{76CF78FE-22A3-4C0B-B1A9-97634A453AE3}']
    function MyFunc(const Range: System.OleVariant): System.OleVariant; safecall;
  end;

这是实现

unit Test;

interface

uses
  SysUtils, ComObj, ComServ, ActiveX, Variants, Office2000, Excel2000, 
  adxAddIn, Test64_TLB,
  System.Classes, adxHostAppEvents, Dialogs, StdVcl;

type
  TCoTest64 = class(TadxAddin, ICoTest64)
  protected
    function MyFunc(var Range: System.OleVariant): System.OleVariant; safecall;
  end;

implementation

function TCoTest64.MyFunc(var Range: System.OleVariant): System.OleVariant;
begin
  Result:= 10;
end;

end.

据我所知implementation = interface

我正在使用德尔福 XE2

怎么了?

4

1 回答 1

6

函数参数列表MyFunc不匹配。接口中的声明ICoTest64使用const参数。但是您在课堂上的实现TCoReporting64使用了一个var参数。

假设接口声明是正确的,您需要更改代码:

type
  TCoReporting64 = class(TadxAddin, ICoTest64)
  protected
    function MyFunc(const Range: System.OleVariant): System.OleVariant; safecall;
  end;
于 2013-08-28T16:18:45.290 回答