Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

Интерфейсные объекты   Найти похожие ветки 

 
TStas ©   (2005-10-23 19:28) [0]

Если я напишу интерфейсный объект и интерфейс к нему, как через интерфейс вызвать его методы? Например, если я через COM работаю с экселем, естественно, я сначала его объект создаю. А здесь как? Или я чего-то никак понять не могу. Просто запустить программу, содержащую интерфейсный объект?


 
Sergey Masloff   (2005-10-23 19:48) [1]

Что такое интерфейсный объект?

В любом случае интерфейс это интерфейс а объект его реализующий это объект. Клиент ничего об этом объекте не знает но это не значит что объект не нужно создавать. За это отвечаешь ты.


 
Sergey Masloff   (2005-10-23 20:02) [2]

Ты имеешь в виду что-то в этом роде?

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComObj;

type
 IMyIntf = interface ["{D9831FCC-6064-4883-AB6B-A9A3A5694F36}"]
   procedure Foo();
 end;

 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 TMyObj = class(TInterfacedObject, IMyIntf)
   destructor Destroy; override;
 protected
   procedure Foo();
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TMyObj }

destructor TMyObj.Destroy;
begin
 ShowMessage("Destroy");
 inherited;
end;

procedure TMyObj.Foo;
begin
 ShowMessage("Foo");
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 iface : IMyIntf;
begin
 iface := TMyObj.Create();
 iface.Foo;
end;

end.



 
TStas ©   (2005-10-23 20:33) [3]

>Sergey Masloff
Да именно это я и имею в виду. А вот как теперь обращаться к нему из другой программы? Термин "интерфейсный объект" я не сам придумал, так они названы в "Искусстве создания компонентов" Фаронова. Ведь чтобы обращаться к методу объекта, он должен быть создан.


 
Sergey Masloff   (2005-10-23 21:23) [4]

Для вызова из внешней программы нужно в реестре регистрировать. Тогда подсистема COM может его найти и отдать клиенту. Наследоваться лучше от какого-нибудь TTypedComObject но рассказывать это все довольно долго.
 Почитай может все же у Фаронова это описано. Не знаю. По крайней мере в 2-3 постах в форуме это не опишешь.


 
TStas ©   (2005-10-24 19:02) [5]

И без регистрации никак? К сожалению, у Фаранова это не написано. Что-то про регистрацию было у Фленова, притом про ручную. Просто хотел научиться ими пользоваться


 
Sergey Masloff   (2005-10-24 20:22) [6]

По нормальному без регистрации никак. Именно из реестра подсистема COM поймет в каком бинарном файле реализация интерфейса которую нужно использовать.



Страницы: 1 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-1130097982
LordOfRock
2005-10-24 00:06
2005.11.13
Opera 8.5/9.0


2-1129796780
Alex7
2005-10-20 12:26
2005.11.13
Переменная "Self"


5-1109368172
jonni
2005-02-26 00:49
2005.11.13
Multi Line property


2-1130083068
~SaM~
2005-10-23 19:57
2005.11.13
Треугольник


14-1129789598
umbra
2005-10-20 10:26
2005.11.13
Windows обновляет файлы конфигурации...