Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
14-1130140271
syte_ser78
2005-10-24 11:51
2005.11.13
какие базы (локальные) поодерживают украинскую локализацию?


3-1128281938
Сергей (гость)
2005-10-02 23:38
2005.11.13
EhLib и Lookup-поля


2-1129572587
~SaM~
2005-10-17 22:09
2005.11.13
А в паскале есть функции аналогичные дельфовским StrToInt и т.п.?


8-1118673537
nWind
2005-06-13 18:38
2005.11.13
Сравнение gif ов


4-1126089449
Хинт
2005-09-07 14:37
2005.11.13
Проблема с ReadProcessMemory





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский