вызов метода ActiveX-контрола с параметром по ссылке | |
---|---|
andrewk Автор Сообщений: 174 Откуда: Красноярск Дата регистрации: 15.05.2005 |
Поиск здесь показал, что проблема возникала в разное время. Только выход из ситуации так и не ясен. Упоминалась статья kb177575, но сейчас msdn её не показывает.
Собственно проблема. Есть ActiveX-контрол. У него некоторые методы вызываются с передачей параметров по ссылке. Вернее, результат возвращается в параметре, переданном по ссылке. Пример из документации в ситаксисе Visual Basic:
Однако при вызове метода возникает ошибка. На любой из вариантов:
Причём, на такое:
Как бы это побороть? Исправлено 1 раз(а). Последнее : andrewk, 26.12.17 23:52 |
Re: вызов метода ActiveX-контрола с параметром по ссылке | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Если в декларации функции НЕ указано явно ByRef, то параметры передаются по значению вообще то.
Нужно через OleView посмотреть как на самом деле декларирована данная функция, какой там тип параметра. Если это таки "ссылка на Variant" (передаваемый по ссылке, либо являющийся out параметром), то без создания вспомогательной dll/fll скорее всего не обойтись будет. Статью MSKB, хотя она и относится формально к фоксу 5/6 версии, можно почитать вот тут ------------------ WBR, Igor |
Re: вызов метода ActiveX-контрола с параметром по ссылке | |
---|---|
andrewk Автор Сообщений: 174 Откуда: Красноярск Дата регистрации: 15.05.2005 |
Вот что показывает OleView:
|
Re: вызов метода ActiveX-контрола с параметром по ссылке | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Там. Это именно та самая "плохая" ссылка на Variant. Чисто силами фокса это победить нельзя, насколько я понимаю. Возможно, используя АПИ и ассемблерные вставки (т.к. ком-контроллер фокса не сможет передать параметром "адрес Variant-а", даже если через АПИ функции и создать нужный объект/структуру Variant)...
Но проще таки на другом языке сделать обёртку. На каком именно - зависит от имеющихся навыков. Полагаю что на C это было бы оптимально (в виде того же fll - для вообще "прозрачной" интеграции с фоксом), но можно и на C# и даже на "классическом" VB... ------------------ WBR, Igor |
© 2000-2024 Fox Club  |