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

Вниз

Для чего нужен dispinterface?   Найти похожие ветки 

 
HydraMarat   (2004-02-27 14:47) [0]

Но самый важный, не могу толком инфы найти: для чего нужен dispinterface?


 
HydraMarat   (2004-02-27 14:49) [1]

Не обращайте внимания на "Но самый важный" - там было стерто много невтемашных вопросиков. Так что же это за dispinterface?

Заранее, Спасибо!


 
Serginio666   (2004-02-27 15:44) [2]

Для того что бы не вызывать GetIdsOfNames а сразу Invoke
и для типизации методов и параметров на этапе компиляции.
По сути сразу вызывается метод IDispatch.Invoke и синтаксическая проверка вызова метода и подсказка через точку.


 
VLAD-MAL   (2004-02-27 16:01) [3]

Для того что бы не вызывать GetIdsOfNames а сразу Invoke
и для типизации методов и параметров на этапе компиляции.

Во, блин, какие люди умные... А я даже Юзерс Гуиде для своего мобильника прочитать до конца не смог...


 
Serginio666   (2004-02-27 16:02) [4]

Еще в дполнение если нет tlb , то для ускорения можно создать описание dispinterface зная название методов получить через GetIdsOfNames dispid методов, а зная вид функции вручную создать описание dispinterface.
TablValue= dispinterface
["{00020400-0000-0000-C000-000000000046}"]
Function ColumnCount:Double; dispid 1;
Function NewColumn(Ident:WideString;Tip:WideString;Len,Per:Double):Double; dispid 2;

end;


 
Внук ©   (2004-02-27 16:09) [5]

Вообще говоря, диспинтерфейсы нужны для состыковки с теми языками, которые не умеют строить таблицы виртуальных методов по стандарту COM (например, программа на VB пытается вызвать COM-объект). В другом случае достаточно обычных интерфейсов.


 
Serginio666   (2004-02-27 16:17) [6]

2 Внук © (27.02.04 16:09) [5]
В том же Ёкселе и Ворде полно описаний диспинтерфейсов, иммено из за привязки к Idispatch.
Кроме того например в TsocketConnection все удаленные вызовы идут через IDispatch и там применение диспинтерфейсов тоже оправдано.


 
Внук ©   (2004-02-27 16:23) [7]

>>Serginio666 (27.02.04 16:17) [6]
Да все просто. Они ориентированы на стандарт OLE (ActiveX), а там диспинтерфейсы обязательны, опять же для совместимости с VB-подобными языками. Если же писать объект на Delphi или C++, никакой IDispath не нужен, как правило. Не говоря о том, что работает медленнее.


 
Polevi ©   (2004-02-27 16:31) [8]

>Внук © (27.02.04 16:23) [7]
то есть позднее связывание не нужно ? гм..


 
Serginio666   (2004-02-27 16:31) [9]

Иногда не получается. Смотри пример с TsocketConnection и удаленными вызовами. Конечно можно делать ТранспарентПрокси но это геморойно.
Лучше уже на Net.


 
Внук ©   (2004-02-27 16:33) [10]

:))
Не нужно там, где без него можно обойтись


 
HydraMarat   (2004-02-29 12:00) [11]

Угу, для совместимости... А как эти диспинтерфейсы описывать? Те же методы, что и у интерфейса, но с dipid? И нужен ли COM-объект для их реализации? Или это, типа, просто таблица методов/свойств?


 
Romkin ©   (2004-02-29 13:34) [12]

Не те же. Проперти описываются именно как проперти, а не функции.
И dispinterface не может существовать без наличия обычного интерфейса :) Он просто идет ему в помощь



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

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

Наверх




Память: 0.49 MB
Время: 0.02 c
14-43835
Mentov
2004-02-22 17:28
2004.03.14
TWebBrowser, проблема со скроллом


7-43922
Андреев
2003-12-21 20:41
2004.03.14
Драйвер


1-43550
Batoon
2004-02-27 17:30
2004.03.14
работа с LISTBOX ом


1-43616
Аноним
2004-03-02 14:22
2004.03.14
TTreeView


1-43578
Ш-К
2004-02-27 15:20
2004.03.14
Как из события передать указатель на объект в мой обработчик?