26.12.2006, 13:58 | #1 |
Участник
|
Передача агументов в функцию com объекта
есть такой код:
X++: void init() { COM com = new COM("ScCt.cpt"); str data; int res; ; res = com.InitComm(1, 1, 0); res = com.recordCount(0, 1); res = com.LinkTest(data); com.closeComm(); } может кто знает как с этим бороться? |
|
26.12.2006, 14:05 | #2 |
Участник
|
Без описания функции единственное, что могу предположить - необходимо передавать Variant, а не String, т.е. что-то типа
X++: res = com.LinkTest(ComVariant::CreateFromStr(data));
__________________
Axapta v.3.0 sp5 kr2 |
|
26.12.2006, 14:15 | #3 |
Участник
|
описание таково:
LinkTest Проверяет связь с терминалом. Кроме того метод позволяет определить модель используемого терминала. Синтаксис вызова LinkTest(<МодельТерминала>) Параметры <МодельТерминала> Строка. После успешного вызова метода параметр содержит модель терминала. Возвращаемое значение Целое. |
|
26.12.2006, 14:44 | #4 |
Участник
|
М-да. Не сильно помогло
А посмотреть Type Library для этого COM-объекта вы можете?
__________________
Axapta v.3.0 sp5 kr2 |
|
26.12.2006, 14:49 | #5 |
Участник
|
|
|
26.12.2006, 14:58 | #6 |
Участник
|
2 Lucky13
Это ActiveX - там нет указателей. Максимум - тип BSTR, а он соответствует аксаптовскому str
__________________
Axapta v.3.0 sp5 kr2 |
|
26.12.2006, 15:03 | #7 |
Участник
|
Цитата:
Цитата:
После успешного вызова метода параметр содержит модель терминала.
|
|
26.12.2006, 15:06 | #8 |
Участник
|
|
|
26.12.2006, 15:08 | #9 |
Участник
|
>>>Это ActiveX - там нет указателей
А out параметры? |
|
26.12.2006, 15:09 | #10 |
Участник
|
Надо взять oldeView или зареференсить допустим в VBA и посмотреть как оно там будет
|
|
|
За это сообщение автора поблагодарили: AndyD (8). |
26.12.2006, 15:13 | #11 |
Участник
|
Что-то типа:
X++: Binary data = new Binary(255); ; res = com.LinkTest(data); //data.str() содержит результат |
|
26.12.2006, 15:20 | #12 |
Участник
|
2 belugin
О! Точно. Но в Axapta с ними надо работать не через указатели X++: ComDispFunction funcGet; COMVariant varRet; ... funcGet = new ComDispFunction(com, "LinkTest", COMDispContext::PropertyGet); varRet = new COMVariant(COMVariantInOut::OUT_RETVAL, COMVariantType::VT_BSTR); funcGet.call(varRet); data = varRet.bStr();
__________________
Axapta v.3.0 sp5 kr2 |
|
26.12.2006, 15:21 | #13 |
Участник
|
зараза. говорит, что метод был вызван с неправильными параметрами...
|
|
26.12.2006, 15:22 | #14 |
Участник
|
|
|
26.12.2006, 15:28 | #15 |
Участник
|
to AndyD:
пробовал так. говорит, что требуемый аргумент был опущен ) |
|
26.12.2006, 15:30 | #16 |
Участник
|
И все-таки надо смотреть TypeLib
PS. Кстати, а при каком вызове говорит? call()?
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 26.12.2006 в 15:33. |
|
26.12.2006, 15:32 | #17 |
Участник
|
знать бы где...
|
|
26.12.2006, 15:35 | #18 |
Участник
|
|
|
26.12.2006, 15:49 | #19 |
Участник
|
to AndyD
да. при нём |
|
26.12.2006, 15:51 | #20 |
Участник
|
Меня тут мысля посетила.
А не так ли надо вызывать? data = com.LinkTest(); ?
__________________
Axapta v.3.0 sp5 kr2 |
|