Форум: "Основная";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
ВнизDelphi and Interface Найти похожие ветки
← →
crossmark (2010-07-19 15:54) [0]Здравствуйте!
вот решил изучать технологию Com.
столкнулся с проблемой аж с самого начала...
набирал код из книги
unit Unit2;
interface
uses Windows;
type
ITest=interface
["{9B187C91-1300-4546-B74E-944CAB86058D}"]
procedure Beep;
end;
ITest2=interface
["{AFC8CFE7-A7BF-4A49-A6E7-0FF319F95FA1}"]
procedure Beep;
end;
TTest2=class(TInterfacedObject,ITest,ITest2)
procedure MyBeep;
procedure ITest.Beep=MyBeep;
procedure ITest2.Beep=MyBeep;
end;
type
TBeeper=class
procedure Beep;
end;
TMessager=class
procedure ShowMessage(const S:string);
end;
TTest3=class(TinterfacedObject,ITest,ITest2)
private
FBeeper:TBeeper; --------------------------> вот здесь при компиляции говорит о том что не знает
Beep
end;
implementation
{ TTest2 }
procedure TTest2.MyBeep;
begin
//
end;
{ TBeeper }
procedure TBeeper.Beep;
begin
Windows.Beep(0,0);
end;
{ TMessager }
procedure TMessager.ShowMessage(const S: string);
begin
MessageBox(0,PChar(S),nil,0);
end;
end.
И еще вопросик:
Смысл в том что, создаем в модуле Интерфейс
unit ToolberInterface;
interface
type
TCommandType=(ctSave,ctLoad,ctClear);
TCommandTypes=set of TCommandType;
TSaveType=(stSave,stSaveAs);
IToolBarCommands=interface
["{0C7A6137-8EE5-4D4B-801B-EF196E10187C}"]
function SupporedCommands:TCommandTypes ;
function Save(AType:TSaveType):Boolean ;
procedure Load;
procedure Clear;
end;
implementation
uses Unit2;
end.
теперь его надо подключить в Форму
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm, IToolBarCommands) ------------> вот здесь по примеру он подключается, но у меня
ошибка
private
{ Private declarations }
function SupportedCommands:TCommandTypes ;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses ToolberInterface, Unit1;
{$R *.dfm}
{ TForm2 }
function TForm2.SupportedCommands: TCommandTypes;
begin
//
end;
end.
Спасибо!
← →
~AQUARIUS~ © (2010-07-19 20:02) [1]
> вот здесь при компиляции говорит о том что не знает Beep
Конечно же не знает. И правильно делает что говорит. Вы сказали компилятору, что ваш класс будет реализовывать интерфейсы ITest и ITest2, у них обоих есть метод Beep, который ДОЛЖЕН быть реадизованный в вашем классе. Но поскольку класс больше не содержит ничего, компилятор ес-но ругается.
> вот здесь по примеру он подключается, но у меня ошибка
Телепатов нет, так что давайте текст ошибки (копировать вот эту свору кода лень). Ну и опять же, смотрим первое замечание
← →
_Юрий (2010-08-02 20:07) [2]
> > вот здесь по примеру он подключается, но у меня ошибка
>
> Телепатов нет, так что давайте текст ошибки (копировать
> вот эту свору кода лень). Ну и опять же, смотрим первое
> замечание
Телепаты есть.
Компилятор не видит идентификатор IToolBarCommands потому, что соответствующий юнит находится в uses-секции implementation, а идентификатор задействован в секции interface
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c