Re[3]: Получение результата с помощью Invoke
От: Vi2 Удмуртия http://www.adem.ru
Дата: 14.01.11 12:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А правильно ли я указываю третий параметр Summa? Который на сервере описан как: Summa(long fp_a, long fp_b, long* fp_c);

А>v_arg[2].vt = VT_BYREF|VT_UINT;
А>v_arg[2].puintVal = &c;

Это зависит от описания метода в IDL файле. Поскольку IOperation — дуальный интерфейс:
[object, dual, ...]
interface IOperation : IDispatch {
[id(1)] HRESULT Summa([in] long fp_a, [in] long fp_b, [in,out] long* fp_c);     //***1***
[id(1)] HRESULT Summa([in] long fp_a, [in] long fp_b, [out,retval] long* fp_c); //***2***
...

Первое описание (***1***) требует передачи трёх параметров, а второе (***2***) — только двух. Что видно при эквивалентном описании dispinterface:
[...]
dispinterface _Operation {
methods:
[id(1)] void Summa([in] long fp_a, [in] long fp_b, [in,out] long* fp_c); //***1***
[id(1)] long Summa([in] long fp_a, [in] long fp_b);                      //***2***
...
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.