| 
			
			 | 
		#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(); } может кто знает как с этим бороться?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Без описания функции единственное, что могу предположить - необходимо передавать Variant, а не String, т.е. что-то типа 
		
		
		
		
		
		
			X++: res = com.LinkTest(ComVariant::CreateFromStr(data)); 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			описание таково: 
		
		
		
		
		
		
		
	LinkTest Проверяет связь с терминалом. Кроме того метод позволяет определить модель используемого терминала. Синтаксис вызова LinkTest(<МодельТерминала>) Параметры <МодельТерминала> Строка. После успешного вызова метода параметр содержит модель терминала. Возвращаемое значение Целое.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			М-да. Не сильно помогло 
		
		
		
		
		
		
			![]() А посмотреть Type Library для этого COM-объекта вы можете? 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2 Lucky13 
		
		
		
		
		
		
			Это ActiveX - там нет указателей. Максимум - тип BSTR, а он соответствует аксаптовскому str 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	
		
			После успешного вызова метода параметр содержит модель терминала.
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			>>>Это ActiveX - там нет указателей 
		
		
		
		
		
		
		
	А out параметры?  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Надо взять oldeView или зареференсить допустим в VBA и посмотреть как оно там будет
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: AndyD (8). | |
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Что-то типа: 
		
		
		
		
		
		
		
	X++: Binary data = new Binary(255); ; res = com.LinkTest(data); //data.str() содержит результат  | 
| 
	
 | 
| 
			
			 | 
		#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  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			зараза. говорит, что метод был вызван с неправильными параметрами...
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			to AndyD: 
		
		
		
		
		
		
		
	пробовал так. говорит, что требуемый аргумент был опущен )  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И все-таки надо смотреть TypeLib 
		
		
		
		
		
		
			PS. Кстати, а при каком вызове говорит? call()? 
				__________________ 
		
		
		
		
		
			Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 26.12.2006 в 15:33.  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			знать бы где...
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			to AndyD 
		
		
		
		
		
		
		
	да. при нём  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Меня тут мысля посетила. 
		
		
		
		
		
		
			А не так ли надо вызывать? data = com.LinkTest(); ? 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 |