Главная страница
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.04 c
14-1130049230
SergP.
2005-10-23 10:33
2005.11.13
Посоветуйте стабильный ICQ-клиент


2-1130244687
Begin
2005-10-25 16:51
2005.11.13
Floating Point


3-1128417033
Ram
2005-10-04 13:10
2005.11.13
Как реализовать модификацию базы через запрос SQL?


14-1130090282
Хацкеренок
2005-10-23 21:58
2005.11.13
Совершенное число


2-1129975111
Ugrael
2005-10-22 13:58
2005.11.13
Помогите с QuickReport 3,пожалуйста.