Форум: "Основная";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
ВнизДля чего нужен 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c