AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.06.2013, 19:42   #1  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Помогите: COM и VT_DISPATCH
Всем привет! Постараюсь кратко.
Пишу оболочку для некого COM.
Сразу говорю - все пишу абсолютно правильно со всеми разрешениями.
Но столкнулся с такой ерундой, которую побороть не могу.
Есть Объект у которого метод который возвращает член Array.
Пример:
X++:
COM a;
COM b; //Класс в котором хранятся данные массива
a = b.Item(1);
После того как происходит присвоение, в отладчике в строке где статус инициализации пишется, имя класса заключается в кавычки и рядом возникает VT_DISPATCH.
Вот так: Name: a Value: "ArrayClass" VT_DISPATCH.
Должно быть: Name: a Value: ArrayClass.

Начал копать и мысли что не грамотно написан COM и еще, кидает постоянно на некое SafeArrayGetElement или GetDataSafeArray или еще как.. Подскажите че делать. Может кто сталкивался.


UPD. Если просто инициализирую класс, не методом присвоения, то все в порядке.
Upd2. Ну и в чем собственно ошибка-не могу обращаться к методам и свойствам объекта.

Последний раз редактировалось iCloud; 13.06.2013 в 20:07.
Старый 13.06.2013, 21:21   #2  
Diman is offline
Diman
Участник
Сотрудники Microsoft Dynamics
 
166 / 35 (2) +++
Регистрация: 27.06.2003
Адрес: Москва
Маловато информации.
Для начала вопрос, почему должно быть ArrayClass, это же COM?
Поэтому для начала стоит копать в этом направлении http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
__________________
Sapere aude
Старый 14.06.2013, 07:43   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Если работаете с массивом через COM, могу подсказать, как можно добавить массив из AX. Обратные действия почему-то не получаются в AX 4.0.
X++:
Array       _a;
COMVariant  value = new COMVariant();
;

value.safeArray(_a);
__________________
// no comments
За это сообщение автора поблагодарили: iCloud (2).
Старый 14.06.2013, 08:32   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от iCloud Посмотреть сообщение
После того как происходит присвоение, в отладчике в строке где статус инициализации пишется, имя класса заключается в кавычки и рядом возникает VT_DISPATCH.
Вот так: Name: a Value: "ArrayClass" VT_DISPATCH.
Должно быть: Name: a Value: ArrayClass.
По-моему, вам Variant возвращают

Попробуйте так

X++:
Com a;
ComVariant variant;
;

variant = b.Item(1);
a = Com::createFromVariant(variant);
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: iCloud (2).
Старый 14.06.2013, 13:06   #5  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Цитата:
Сообщение от AndyD Посмотреть сообщение
По-моему, вам Variant возвращают

Попробуйте так

X++:
Com a;
ComVariant variant;
;

variant = b.Item(1);
a = Com::createFromVariant(variant);
Честно признаюсь, помню что там было что-то про Variant. Спасибо, попробую, отпишусь коллеги!
Накопал параллельно:
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);
VT_DISPATCH (IDispatch) - data type!

Последний раз редактировалось iCloud; 14.06.2013 в 13:16.
Старый 14.06.2013, 13:39   #6  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
А еще так видимо можно:
X++:
ComVariant     comVariant = new ComVariant(ComVariantInOut::In, ComVariantType::VT_DISPATCH);
Теги
vt_dispatch

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
DynamicsAxSCM: Visualizing Security in Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 29.08.2011 13:11
dynamicsaxbi: Screenshots of Dynamics AX 2009 Role Centers Blog bot DAX Blogs 0 18.03.2011 20:11
Помогите перенастроить Com Connector на другую базу Shirmin Oleg DAX: Администрирование 6 06.05.2010 19:28
Kurt Hatlevik: Sneak preview of the WMS E&E Blog bot DAX Blogs 0 20.11.2008 01:10

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.