Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.11.2021, 12:33
rmzvoid rmzvoid вне форума
Прохожий
 
Регистрация: 06.11.2021
Сообщения: 2
Версия Delphi: Delphi 10.3
Репутация: 10
Восклицание Вызывается не тот метод COM

У меня есть свой АктивХ компонент написанный на С++ в вижуал студии 2019. Написан давно и постоянно дорабатывается. Использую я его в дельфи в том числе. В основном проблем нем, но бывает порою взбрыкнет дельфя. И как то получалось исправить своими силами. Вот в очередной раз я встретил вилы.

Есть у меня в компоненте интерфейс IDictionaryJO. У него есть метод GetInterface.

Код:
IDictionaryJO = interface(IUnknown)
  ['{some guid here}']
  // ... another methods
  function GetInterface(name: PAnsiChar; out interf: IUnknown): HResult; stdcall;
  // ... another methods
end;

Это из генерёнки, при импорте компонента. Список методов, их порядок и сигнатуры соответствуют тем что реально находятся в компоненте.

Загвоздка в том, что при вызове данного метода вызывается другой метод этого интерфейса, а именно этот:

Код:
function Get(name: PAnsiChar; out param: OleVariant): HResult; stdcall;

Подскажите в чем загвоздка?

Дабы не тратить время лишнее также добавлю что полностью обновлял пэкадж. Удалял старый и через IDE и руками с диска. А потом импортировал заново.
Ответить с цитированием
  #2  
Старый 09.11.2021, 23:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А сам компонент перерегистрировал?
Ответить с цитированием
  #3  
Старый 10.11.2021, 23:06
rmzvoid rmzvoid вне форума
Прохожий
 
Регистрация: 06.11.2021
Сообщения: 2
Версия Delphi: Delphi 10.3
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А сам компонент перерегистрировал?

да

проблема собсно решена, оказывается в *.idl файле забыли добавить два метода. Меня смутило что методы все равно вызываются, без всяких ошибок, это ппц просто)
Ответить с цитированием
  #4  
Старый 11.11.2021, 18:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, формально, сигнатуры совместимы. Поэтому, видимо, и вызывается...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:30.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter