Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1316555083
Джо
2011-09-21 01:44
2012.01.15
Сша, психоделик, 60-е.


15-1316982602
Юрий
2011-09-26 00:30
2012.01.15
С днем рождения ! 26 сентября 2011 понедельник


15-1317041117
LDV
2011-09-26 16:45
2012.01.15
сформулировать текст сообщения


15-1317153552
xayam
2011-09-27 23:59
2012.01.15
ExeClient = WebKit + HTML + CSS + JavaScript


2-1317796120
Laguna
2011-10-05 10:28
2012.01.15
Обработка ошибок в открывающейся форме





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский