![]() |
#1 |
Enjoy!
|
Помогите: COM и VT_DISPATCH
Всем привет! Постараюсь кратко.
Пишу оболочку для некого COM. Сразу говорю - все пишу абсолютно правильно со всеми разрешениями. Но столкнулся с такой ерундой, которую побороть не могу. Есть Объект у которого метод который возвращает член Array. Пример: X++: COM a;
COM b; //Класс в котором хранятся данные массива
a = b.Item(1); Вот так: Name: a Value: "ArrayClass" VT_DISPATCH. Должно быть: Name: a Value: ArrayClass. Начал копать и мысли что не грамотно написан COM и еще, кидает постоянно на некое SafeArrayGetElement или GetDataSafeArray или еще как.. Подскажите че делать. Может кто сталкивался. UPD. Если просто инициализирую класс, не методом присвоения, то все в порядке. Upd2. Ну и в чем собственно ошибка-не могу обращаться к методам и свойствам объекта. Последний раз редактировалось iCloud; 13.06.2013 в 20:07. |
|
![]() |
#2 |
Участник
|
Маловато информации.
Для начала вопрос, почему должно быть ArrayClass, это же COM? Поэтому для начала стоит копать в этом направлении http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
__________________
Sapere aude |
|
![]() |
#3 |
Участник
|
Если работаете с массивом через COM, могу подсказать, как можно добавить массив из AX. Обратные действия почему-то не получаются в AX 4.0.
X++: Array _a;
COMVariant value = new COMVariant();
;
value.safeArray(_a);
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: iCloud (2). |
![]() |
#4 |
Участник
|
Цитата:
Попробуйте так X++: Com a; ComVariant variant; ; variant = b.Item(1); a = Com::createFromVariant(variant);
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: iCloud (2). |
![]() |
#5 |
Enjoy!
|
Цитата:
Накопал параллельно: iDispatch(): Gets or sets the value of a COMVariant object of the VT_DISPATCH (IDispatch) data type. X++: Com a; ComVariant variant; ; variant = b.Item(1); a = Com::iDispatch(variant); Последний раз редактировалось iCloud; 14.06.2013 в 13:16. |
|
![]() |
#6 |
Enjoy!
|
А еще так видимо можно:
X++: ComVariant comVariant = new ComVariant(ComVariantInOut::In, ComVariantType::VT_DISPATCH); |
|
Теги |
vt_dispatch |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|