|
Что требуется для вызова COM объекта на Delphi из C#?
|
|||
---|---|---|---|
#18+
В Дельфи форуме уже спрашивал, там не знают. Есть ком объект на Дельфи 7. Интересующий метод выглядит как Код: pascal 1.
Обратите внимание, что stdcall не используется. Исходники есть, но изменять их не позволено. ТЛБ есть, но показать больше одной строки из неё тоже не позволено. В шарпе добавляю COM-reference на тлб этого объекта, заводится ссылка, и становится видимым неймспейс. В нём виден класс и метод, выглядящий как Код: c# 1.
При вызове ошибка Код: plaintext
Как правильно подцепить этот ком к шарп и вызвать его? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 01:39 |
|
Что требуется для вызова COM объекта на Delphi из C#?
|
|||
---|---|---|---|
#18+
Сибирский Пушистый Обратите внимание, что 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. Такие методы вполне имеют право на жизнь как часть инфраструктурной реализации, но выставление их наружу внешнему потребителю чревато всяческими чудесами. Сибирский Пушистый ТЛБ есть, но показать больше одной строки из неё тоже не позволено. Это задание с собеседования? Или часть исходников чебурнета? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 10:40 |
|
Что требуется для вызова COM объекта на Delphi из C#?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны часть исходников чебурнета? Вот это. Что оно нестандартное, винить надо кого-то, ушедшего за дверь лет 15 назад, так что пользоваться приходится тем, что есть. Значит, шарп такое не съест? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 05:49 |
|
Что требуется для вызова COM объекта на Delphi из C#?
|
|||
---|---|---|---|
#18+
Сибирский Пушистый Значит, шарп такое не съест? Да такое вообще мало кто съест, потому как оно вообще не по канонам COM. Можно попробовать дёргать это чудо поздним связыванием - есть какая-то мне лично не до конца понятная разница то ли в маршаллинге, то ли в принципе конструирования динамических вызовов, когда раннее свзяывание не работает ни в какую, а позднее - работает ( пример ). Может, и взлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 06:26 |
|
Что требуется для вызова COM объекта на Delphi из C#?
|
|||
---|---|---|---|
#18+
Да, как вариант - раз на дельфи это чудо работает нормально, то на том же дельфи сделать COM-прокси, сделать нормально, со всеми stdcall и HRESULT, который внутри будет вызывать эту штуку, и перенаправлять её результаты. Дело это не особенно хитрое, я такое когда-то делал для использования одного специфического COM-компонента в WSH-скриптах - они не умеют работать с методами, у которых, например, есть аргументы с подтипами SAFEARRAY, прокси просто наружу выставлял методы с аргументами типа VARIANT*, внутри разбирал их в SAFEARRAY, и передавал родному компоненту. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 06:53 |
|
Что требуется для вызова COM объекта на Delphi из C#?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Да, как вариант - раз на дельфи это чудо работает нормально, то на том же дельфи сделать COM-прокси Спасибо, но мне не дадут такое сделать. Этот вариант уже рассмотрели и отклонили. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 21:55 |
|
|
start [/forum/topic.php?fid=20&msg=40034535&tid=1398385]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 270ms |
total: | 403ms |
0 / 0 |