Для чого потрібний dispinterface

Але найважливіший, не можу толком інформації визначити: навіщо потрібен dispinterface?

Не звертайте уваги на "Але найважливіший" - там було стерто багато нерозважних запитань. Так що ж це за dispinterface?

Для того, щоб не викликати GetIdsOfNames а одночасно Invoke і для типізації методів і параметрів на етапі компіляції. По суті відразу викликається метод IDispatch.Invoke та синтаксична перевірка виклику методу та підказка через точку.

Для того щоб не викликати GetIdsOfNames а одночасно Invoke і для типізації методів і параметрів на етапі компіляції.В, млинець, які люди розумні. А я навіть Юзерс Гуїде для свого мобільника прочитати до кінця не зміг.

Ще якщо немає tlb , то для прискорення можна створити опис dispinterface знаючи назву методів отримати через GetIdsOfNames dispid методів, а знаючи вид функції вручну створити опис dispinterface. TablValue= dispinterface [""] Function ColumnCount:Double; dispid 1; Function NewColumn(Ident:WideString;Tip:WideString;Len,Per:Double):Double; dispid 2;

Взагалі, диспінтерфейси потрібні для стикування з тими мовами, які не вміють будувати таблиці віртуальних методів за стандартом COM (наприклад, програма на VB намагається викликати COM-об'єкт). В іншому випадку достатньо простих інтерфейсів.

>>Serginio666 (27.02.04 16:17) [6] Та все просто. Вони орієнтовані на стандарт OLE (ActiveX), а там диспінтерфейс обов'язкові, знову ж таки для сумісності з VB-подібними мовами. Якщо ж писати об'єкт на Delphi чи C++, ніякий IDispath не потрібен, зазвичай. Не кажучи про те, що працює повільніше.

Іноді не виходить. Дивись приклад з TsocketConnection та віддаленими викликами. Звичайно можна робити ТранспарентПроксі, але це геморойно. Краще вже на Net.

:)) Не потрібно там, де без нього можна обійтися

Угу для сумісності. А як описувати ці диспінтерфейси? Ті ж методи, як і в інтерфейсу, але з dipid? І чи потрібен COM-об'єкт їх реалізації? Чи це, на кшталт, просто таблиця методів/властивостей?

Не ті самі. Проперті описуються саме як проперти, а чи не функції. І dispinterface не може існувати без наявності звичайного інтерфейсу :) Він просто йде йому на допомогу