读书人

请问一个编译异常:Declaration diffe

发布时间: 2012-02-16 21:30:36 作者: rapoo

请教一个编译错误:Declaration differs from declaration?
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Ole2, UrlMon;

type
TForm1 = class(TForm, IBindStatusCallback)
private
{ Private declarations }
function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall;
function GetPriority(out nPriority): HResult; stdcall;
function OnLowResource(reserved: DWORD): HResult; stdcall;
function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG;
szStatusText: LPCWSTR): HResult; stdcall;
function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall;
function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall;
function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc;
stgmed: PStgMedium): HResult; stdcall;
function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

function TForm1.GetBindInfo(out grfBINDF: DWORD;
var bindinfo: TBindInfo): HResult;
begin

end;

function TForm1.GetPriority(out nPriority): HResult;
begin

end;

function TForm1.OnDataAvailable(grfBSCF, dwSize: DWORD;
formatetc: PFormatEtc; stgmed: PStgMedium): HResult;
begin

end;

function TForm1.OnLowResource(reserved: DWORD): HResult;
begin

end;

function TForm1.OnObjectAvailable(const iid: TGUID;
punk: IInterface): HResult;
begin

end;

function TForm1.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG;
szStatusText: LPCWSTR): HResult;
begin

end;

function TForm1.OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult;
begin

end;

function TForm1.OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult;
begin

end;

end.

编译时出错:
[Error] Unit1.pas(25): Declaration of 'OnDataAvailable ' differs from declaration in interface 'IBindStatusCallback '
[Error] Unit1.pas(25): Declaration of 'OnObjectAvailable ' differs from declaration in interface 'IBindStatusCallback '


[Error] Unit1.pas(59): Declaration of 'OnObjectAvailable ' differs from previous declaration
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas '

怎么解决该问题呀?


[解决办法]
问题原因找到了:PFormatEtc和PStgMedium在ole2和ActiveX两个单元中都有定义,你应该引用ActiveX单元,把uses部分的ole2改成ActiveX即可。

读书人网 >.NET

热点推荐