Главная страница
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.018 c
14-43818
MPS
2004-02-19 10:43
2004.03.14
Как на TP написать графическое Dos приложение


7-43913
Ozone
2003-12-18 10:22
2004.03.14
Web-камера


3-43263
Sirgfine
2004-02-06 04:42
2004.03.14
Индексация в qBase


1-43490
DmitryNekl
2004-01-23 13:32
2004.03.14
Создание разных форм в одной процедуре


1-43568
ghg
2004-01-23 13:25
2004.03.14
matlab и Delphi