Главная страница
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.667 c
1-43463
i-s-v
2004-02-16 22:34
2004.03.14
Вопрос по контекстному меню.


3-43344
Rumba
2004-02-16 16:36
2004.03.14
FIBPlus 5.08 master-detail


3-43404
Vist
2004-02-13 12:02
2004.03.14
Индексация через BDE


3-43380
Delphi5.01
2004-02-14 11:17
2004.03.14
Windows98/2000 дает ошибку,мол не могу создать Delphi Tabase Engi


1-43584
Kraft
2004-02-25 14:49
2004.03.14
Как запретить горячие клавиши