Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.011 c
14-43780
Cerber
2004-02-18 16:39
2004.03.14
Работа в инте


14-43820
Alex Konshin
2004-02-21 23:10
2004.03.14
Средний класс в Америке


14-43850
Кен
2004-02-20 05:16
2004.03.14
А не проголосовать ли за Малышкина ? По приколу. Он смешной.


4-43939
talisman
2004-01-07 15:23
2004.03.14
кнопки клавы


1-43594
LaidBack
2004-02-27 11:20
2004.03.14
Как вызвать нажатие кнопки Minimize у формы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский