|  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 | 
|  |