Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что требуется для вызова COM объекта на Delphi из C#? / 6 сообщений из 6, страница 1 из 1
10.01.2021, 01:39
    #40034535
Что требуется для вызова COM объекта на Delphi из C#?
В Дельфи форуме уже спрашивал, там не знают.

Есть ком объект на Дельфи 7.
Интересующий метод выглядит как

Код: pascal
1.
function Func(a, b: WideString) : WideString;



Обратите внимание, что stdcall не используется. Исходники есть, но изменять их не позволено. ТЛБ есть, но показать больше одной строки из неё тоже не позволено. В шарпе добавляю COM-reference на тлб этого объекта, заводится ссылка, и становится видимым неймспейс. В нём виден класс и метод, выглядящий как

Код: c#
1.
string Func(string a, string b)



При вызове ошибка

Код: plaintext
The method or operation is not implemented.

Как правильно подцепить этот ком к шарп и вызвать его?
...
Рейтинг: 0 / 0
11.01.2021, 10:40
    #40034808
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что требуется для вызова COM объекта на Delphi из C#?
Сибирский Пушистый
Обратите внимание, что stdcall не используется.

Ага. И еще обратили внимание, что возвращаемый тип - не то, что положено согласно документации :
A return type is compatible with Automation if its type is an HRESULT, SCODE or void. However, MIDL requires that interface methods return either HRESULT or SCODE. Returning void generates a compiler error.
Такие методы вполне имеют право на жизнь как часть инфраструктурной реализации, но выставление их наружу внешнему потребителю чревато всяческими чудесами.

Сибирский Пушистый
ТЛБ есть, но показать больше одной строки из неё тоже не позволено.

Это задание с собеседования? Или часть исходников чебурнета?
...
Рейтинг: 0 / 0
13.01.2021, 05:49
    #40035227
Что требуется для вызова COM объекта на Delphi из C#?
Сон Веры Павловны
часть исходников чебурнета?

Вот это. Что оно нестандартное, винить надо кого-то, ушедшего за дверь лет 15 назад, так что пользоваться приходится тем, что есть. Значит, шарп такое не съест?
...
Рейтинг: 0 / 0
13.01.2021, 06:26
    #40035230
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что требуется для вызова COM объекта на Delphi из C#?
Сибирский Пушистый
Значит, шарп такое не съест?

Да такое вообще мало кто съест, потому как оно вообще не по канонам COM.
Можно попробовать дёргать это чудо поздним связыванием - есть какая-то мне лично не до конца понятная разница то ли в маршаллинге, то ли в принципе конструирования динамических вызовов, когда раннее свзяывание не работает ни в какую, а позднее - работает ( пример ). Может, и взлетит.
...
Рейтинг: 0 / 0
13.01.2021, 06:53
    #40035232
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что требуется для вызова COM объекта на Delphi из C#?
Да, как вариант - раз на дельфи это чудо работает нормально, то на том же дельфи сделать COM-прокси, сделать нормально, со всеми stdcall и HRESULT, который внутри будет вызывать эту штуку, и перенаправлять её результаты. Дело это не особенно хитрое, я такое когда-то делал для использования одного специфического COM-компонента в WSH-скриптах - они не умеют работать с методами, у которых, например, есть аргументы с подтипами SAFEARRAY, прокси просто наружу выставлял методы с аргументами типа VARIANT*, внутри разбирал их в SAFEARRAY, и передавал родному компоненту.
...
Рейтинг: 0 / 0
13.01.2021, 21:55
    #40035583
Что требуется для вызова COM объекта на Delphi из C#?
Сон Веры Павловны
Да, как вариант - раз на дельфи это чудо работает нормально, то на том же дельфи сделать COM-прокси

Спасибо, но мне не дадут такое сделать. Этот вариант уже рассмотрели и отклонили.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что требуется для вызова COM объекта на Delphi из C#? / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]