Re[4]: как получить double из IDispatchPtr
От: Аноним  
Дата: 19.03.14 18:28
Оценка:
Здравствуйте, Vi2, Вы писали:

Vi2>Здравствуйте, Vasilich2222, Вы писали:


V>>Спасибо за ответ, но это не проходит.

V>>pMeaner имеет только 7 методов (3 от COM и 4 от Disзatch).
V>>real — это double паскале и паскаль это дело переворавчивает сам, так же как и VB.

Vi2>Тебе нужно либо выложить TLB любо IDL описание интерфейса, имеющего метод Mean.


Vi2>Как общее соображение: obj->f(ps)->g(ps)... может иметь место в случае возврата функцией объекта. Тем есть несколько механизмов, реализующие корректное исполнение ->. Если "real" — не название метода, то тогда у m_TIA->ProcessingSystem()->Mean(pImagePlot->Data) запрашивается свойство-по-умолчанию, имеющее ID=0, до тех пор пока не вернётся не-объект, из которого получают плавающее значение double преобразованием вариантов (VARIANT).


так я же в самом начале написал, что в OleView (открываю tlb файл и) вижу
[id(0x00000026), helpstring("Mean function")]
IDispatch* Mean(IDispatch* Data);

я так понимаю, что когда я вызываю функцию Mean, то она отрабатывает и создает объект с интерфейсом IDispatch, в котором где-то в VARIANT и находится нужный мне double. Pascal делает переход с IDispatch в double с помощью добавления ".real".
я также предополагаю, что вызов Invoke с id(0x00000026) вызовет функцию Mean ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.