Site icon EfmSoft

Что означает код HRESULT 0x80020005 (DISP_E_TYPEMISMATCH)?

 
Предыдущий Следующий
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 параметров.

Что делать

Передавайте значение совместимого типа или выполняйте явное проверяемое преобразование до вызова.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version