Здравствуйте.
Подскажите, пожалуйста, что я не так делаю.
Создаю COM-объект в Delphi 7, при этом получаю автоматически с помощью делфиевского окна "COM Object Wizard" следующий код:
unit MAPCOMServerInit;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, MAPCOMServer_TLB, StdVcl, esriSystemUI_TLB;
type
TMAPCOMServerDima = class(TAutoObject, ICommand)
protected
function Get_Caption: WideString; safecall;
function Get_Category: WideString; safecall;
function Get_Checked: WordBool; safecall;
function Get_Enabled: WordBool; safecall;
function Get_HelpContextID: Integer; safecall;
function Get_HelpFile: WideString; safecall;
function Get_Message: WideString; safecall;
function Get_Name: WideString; safecall;
function Get_Tooltip: WideString; safecall;
function Get_Bitmap: OLE_HANDLE; safecall;
procedure OnClick; safecall;
procedure OnCreate(const hook: IDispatch); safecall;
end;
implementation
uses ComServ;
function TMAPCOMServerDima.Get_Caption: WideString;
begin
end;
function TMAPCOMServerDima.Get_Category: WideString;
begin
end;
function TMAPCOMServerDima.Get_Checked: WordBool;
begin
end;
function TMAPCOMServerDima.Get_Enabled: WordBool;
begin
end;
function TMAPCOMServerDima.Get_HelpContextID: Integer;
begin
end;
function TMAPCOMServerDima.Get_HelpFile: WideString;
begin
end;
function TMAPCOMServerDima.Get_Message: WideString;
begin
end;
function TMAPCOMServerDima.Get_Name: WideString;
begin
end;
function TMAPCOMServerDima.Get_Tooltip: WideString;
begin
end;
function TMAPCOMServerDima.Get_Bitmap: OLE_HANDLE;
begin
end;
procedure TMAPCOMServerDima.OnClick;
begin
end;
procedure TMAPCOMServerDima.OnCreate(const hook: IDispatch);
begin
end;
initialization
TAutoObjectFactory.Create(ComServer, TMAPCOMServerDima, Class_MAPCOMServerDima,
ciMultiInstance, tmApartment);
В результате компиляции этого кода выдаётся ошибка:
Declaration of 'Get_Bitmap' differs from declaration in interface 'ICommand'
Смотрю исходный код файла esriSystemUI_TLB.pas, в котором этот ICommand объявлен и который соответственно взят в качестве предка для моего класса, вижу:
ICommand = interface(IUnknown)
['{36B06538-4437-11D1-B970-080009EE4E51}']
function Get_Enabled: WordBool; safecall;
function Get_Checked: WordBool; safecall;
function Get_Name: WideString; safecall;
function Get_Caption: WideString; safecall;
function Get_Tooltip: WideString; safecall;
function Get_Message: WideString; safecall;
function Get_HelpFile: WideString; safecall;
function Get_HelpContextID: Integer; safecall;
function Get_Category: WideString; safecall;
procedure OnCreate(const hook: IDispatch); safecall;
function Get_Bitmap: OLE_HANDLE; safecall;
procedure OnClick; safecall;
property Enabled: WordBool read Get_Enabled;
property Checked: WordBool read Get_Checked;
property Name: WideString read Get_Name;
property Caption: WideString read Get_Caption;
property Tooltip: WideString read Get_Tooltip;
property Message: WideString read Get_Message;
property HelpFile: WideString read Get_HelpFile;
property HelpContextID: Integer read Get_HelpContextID;
property Bitmap: OLE_HANDLE read Get_Bitmap;
property Category: WideString read Get_Category;
end;
То есть объявление функции Get_Bitmap точно такое же, как и в моём классе TMAPCOMServerDima.
Почему тогда ругается компилятор?