| Предыдущий | Следующий |
| DISP_E_BADCALLEE | DISP_E_DIVBYZERO |
DISP_E_NOTACOLLECTION
Что означает DISP_E_NOTACOLLECTION
DISP_E_NOTACOLLECTION (0x80020011) — код пытается обращаться к Automation-объекту как к коллекции, но объект не поддерживает требуемое перечисление или индексированный default member.
COM Automation позволяет вызывать свойства и методы через IDispatch без жёсткой привязки к vtable-интерфейсу: имя преобразуется в DISPID, а Invoke получает аргументы как VARIANT/DISPPARAMS. Поэтому для DISP_E_* особенно важны конкретный член, DISPID и фактические типы аргументов.
Что проверить
- Проверьте наличие
DISPID_NEWENUMи/или индексируемого default property у конкретного класса. - Убедитесь, что wrapper не принял обычный объект за collection только по внешнему типу VARIANT.
- Сохраните class identity и DISPID операции, которая ожидала коллекцию.
Что делать
Используйте опубликованный интерфейс объекта; не эмулируйте collection semantics, если COM-класс их не предоставляет.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
