请教一个编译错误: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即可。