Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
2-1129433833
intel
2005-10-16 07:37
2005.11.13
глюк формы


14-1129964896
_WWW
2005-10-22 11:08
2005.11.13
Помогите разобраться


3-1127989790
4ik
2005-09-29 14:29
2005.11.13
Проблемы с языковым драйвером под dBase и Paradox.


9-1119948586
Зм1й
2005-06-28 12:49
2005.11.13
Загрузка модели


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




   Наверх