![]() |
|
![]() ![]() ![]() |
|
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Делаю COM-сервер с дуальным интерфейсом, и в передаче параметров в IDispatch::Invoke
программа вылетает с ошибкой долступа к памяти
подскажите где я натупил с указателями? |
|||
|
||||
kline |
|
||||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Дальше интересней
разобрался с указателями - ошибок исполнения нет но параметры передаются как-то странно
вызывается это дело так
при выполнении видим ![]() куда рыть?????? |
||||
|
|||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Проверить типы www1 и www2 (возможно там не строки) Во вторых исправить строку 17 на *pvarResult = outer; (да и pvarResult на NULL не плохо было бы проверить) |
||||||
|
|||||||
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
точно
поставил проверку
а как определить какой тип в варианте? |
|||
|
||||
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Спасибо xvr
разобрался, действительно VB пихает строку не VT_BSTR применяя преобразование типа всё ставим на место но правда не нашол в какой тип складывается строка, предполагаю что в SAFEARRAY??? вот так пашет :
Добавлено через 1 минуту и 58 секунд Sorry xvr на + постов не хватает ![]() |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Распечатай pDispParams->rgvarg[0].vt (можно через sprintf и тот же MessageBox) и посмотри какой VT_* константе он равен. |
||||
|
|||||
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
это да, я сделал сразу
но выдаёт-то число а в хидерах соответствия нет ![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Какое число? Соотвествие найдем ![]() |
|||
|
||||
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Выдаёт 16396
проверял так
|
|||
|
||||
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
это при одиночном запуске
а сейчас запустил в цикле получаю 9 |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Это соотвествует Variant by ref (ссылка на вариант)
Т.е. в первом случае переменная была передана по ссылке, а что бы ее можно было изменить на что угодно, ее завернули в Variant Во втором случае строка была преобразованна в объект (String) и переданна в таком виде. |
||||
|
|||||
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
а где смотрел?
![]() |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
wtypes.idl
Это сообщение отредактировал(а) xvr - 1.11.2008, 22:18 |
||||
|
|||||
kline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 22.10.2004 Репутация: нет Всего: нет |
Спасибочки!!
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |