| Предыдущий | Следующий |
| DISP_E_PARAMNOTFOUND | DISP_E_UNKNOWNNAME |
DISP_E_TYPEMISMATCH
Что означает DISP_E_TYPEMISMATCH
DISP_E_TYPEMISMATCH (0x80020005) — как минимум один переданный VARIANT нельзя привести к типу параметра, который ожидает Automation-член.
COM Automation позволяет вызывать свойства и методы через IDispatch без жёсткой привязки к vtable-интерфейсу: имя преобразуется в DISPID, а Invoke получает аргументы как VARIANT/DISPPARAMS. Поэтому для DISP_E_* особенно важны конкретный член, DISPID и фактические типы аргументов.
Что проверить
- Проверьте
argErr, если Invoke его заполнил: он указывает на проблемный аргумент. - Сохраните исходный VARTYPE и ожидаемый тип до автоматического coercion.
- Проверьте locale-sensitive преобразования строк в даты/числа и
VT_BYREFдля out/in-out параметров.
Что делать
Передавайте значение совместимого типа или выполняйте явное проверяемое преобразование до вызова.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.