![]() |
#1 |
Участник
|
Variant Array и метод COM обекта
Что надо сделать, чтобы пердать Variant Array как параметр в метод COM обекта?
|
|
![]() |
#2 |
Moderator
|
Поиск помнит все: http://www.axforum.info/forums/showt...&threadid=1161
Направление там в принципе правильное, почем не получилось - не знаю. ![]() Но смотрите в этом направлении. |
|
![]() |
#3 |
Участник
|
ComVariant::createFromArray(),
но массив должен быть одномерным. |
|
![]() |
#4 |
Модератор
|
Цитата:
Изначально опубликовано Андре
Поиск помнит все: http://www.axforum.info/forums/showt...&threadid=1161 Направление там в принципе правильное, почем не получилось - не знаю. ![]() PHP код:
PHP код:
|
|
![]() |
#5 |
Участник
|
2Андре видел я это все и смотрел в этом направлении, но увы...
Вот мой код: PHP код:
Давайте обратимся к описанию метода, который мне нужно вызвать: [id(00000000), propget, vararg, helpcontext(0x00315634)] Cell* Item([in] SAFEARRAY(VARIANT)* idx); Обратите внимание, что idx передается по ссылке - может быть в этом проблема? Например в C# я писал cellSet.get_Item(ref coords) - есть ли какой-нибудь аналог ref в X++? |
|
![]() |
#6 |
Участник
|
А если так попробовать?
PHP код:
|
|
![]() |
#7 |
Участник
|
Цитата:
Изначально опубликовано dn
А если так попробовать? Да и если верить дебагеру, то действия a = ComVariant::createFromArray(arr); и a.safeArray(arr); эквивалентны. Есть такое ощущение, что Аксапта не корректно отдает массив в COM... |
|
![]() |
#8 |
Участник
|
Цитата:
Изначально опубликовано TravellerInTime
Есть такое ощущение, что Аксапта не корректно отдает массив в COM... |
|
![]() |
#9 |
Участник
|
Попробую предложить ещё один вариант. За работоспособность правда не ручаюсь
![]() PHP код:
|
|
![]() |
#10 |
Участник
|
Цитата:
Изначально опубликовано dn
Возможно, но я в своё время строковый массив передавал в Excel через com. Цитата:
А что если попробовать преобразовать строковый, а не целый (int) массив в вариантный, и передавать его? ![]() |
|
![]() |
#11 |
Участник
|
Цитата:
Изначально опубликовано dn
Попробую предложить ещё один вариант. За работоспособность правда не ручаюсь ![]() ![]() ![]() |
|
![]() |
#12 |
Участник
|
Цитата:
Изначально опубликовано TravellerInTime
А что в описании интерфейса значится: массив строк или массив вариантов? HRESULT _stdcall Value( [in, lcid] long lcid, [out, retval] VARIANT* RHS); [propput, helpcontext(0x00010006)] HRESULT _stdcall Value( [in, lcid] long lcid, [in] VARIANT RHS); p.s. насчет твоего случая у меня идеи закончились... ![]() |
|