Как COM объекту передать указатель на строку из 1С #506150


#0 by 1C-Nick
Есть COM объект, без исходных кодов. Один из его методов в качестве параметра принимает указатель на строку (BSTR *var) и возвращает в нем результат работы. Вопрос: как правильно туда передать параметр из 1С не разрабатывая для этого промежуточных внешних компонент...
#1 by smaharbA
адинес в оле по ссылке не передает, пользуйся оберткой
#2 by 1C-Nick
я вот думаю, нельзя ли получить в переменную 1С указатель на строку как результат работы какого-либо скрипта, а потом его передать как параметр. Но если 1С по ссылке ничего не передает, то и это не прокатит
#3 by smaharbA
можно получить переменную из обертки со всеми вытикающими
#4 by 1C-Nick
самое интересное что на vbscript аналогичная проблема. по крайней мере, я не знаю как типизировать переменную скрипта *WALL*
#5 by smaharbA
Пример (для приведенного конечно все просче и не надо обертку, но тут чисто пример)
#6 by smaharbA
а откудова тогда вообще передается в этот метод и возвращается с успехом ?
#7 by smaharbA
кстати на примере динавраппера, вполне возвращаются значения в джабускрипт
#8 by 1C-Nick
из delphi, c#, Visual c++ и т.п. Из vbscript тоже наверное как-то можно, но я пока не знаю как. начал ковырять для написания обертки - вылетает с ошибкой, что параметр не соответствует нужному типу, а типизация в скрипте только при первом присваивании значения. вот и получается замкнутый круг... да и к тому же из-за того что в скрипте создается СОМ объект оно не особо быстро работает, а предполагается вешать эту функцию в обработчик ожидания. пока что вижу два решения - попросить разработчика компоненты слегка ее подрихтовать или писать обертку как внешнюю компоненту к 1С. например...
#9 by Torquader
И JavaScript и VbScript передают параметры через тип Вариант (У VbScript указатель на вариант). То есть прямой указатель на строку нужно как-то из этого Variant доставать. Также не стоит забывать, что у строки есть такой параметр, как размер - если передавать указатель, то никто не обещает нужный размер. Поэтому - если есть возможность - объяснить автору, что работать с указателем на строку можно только в пределах одного процесса и только когда известен размер строки, а для OLE обмена придуман тип Variant, с которым работать очень просто.
#10 by tridog
Вот так прямо для OLE? :-D
#11 by 1C-Nick
например, на Visual Basic объвив переменную string и передав - все работает, а вот на vbscript типизация переменных происходит при первом присваивании значения (что все равно не помогает в моем случае) и по умолчанию все переменные - variant по поводу размера - хотелось бы увидеть живой пример, когда размер получается неправильный.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С