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

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



Память: 0.48 MB
Время: 0.02 c
1-43458
Rosik
2004-03-01 00:36
2004.03.14
TWebBrowser


3-43327
чайник1
2004-02-17 11:28
2004.03.14
Резервное копирование


6-43718
Net_Prosto
2003-12-05 19:42
2004.03.14
Как разорвать соединение с интернетом?


1-43679
3asys
2004-03-01 18:00
2004.03.14
Реализация Object TreeView


3-43373
va
2004-02-17 18:13
2004.03.14
Отладка в interbase




   Наверх