И тут мой код вдруг стал возвращать иногда (в 1 из 3 случаев) какой-то (судя по описанию ошибки) неизвестный код.
Мессага об ошибке писал(а):Непредусмотренная ситуация. Ошибка при создании InfoProvider
Дай, думаю, посмотрю, что за код:
- Код: Выделить всё
hRes = НекотораяФунция(.......)
Select Case hRes
Case HRESULTS.S_OK ' Константа SULTS.S_OK = 0, если что
''''''''''' ВЫРЕЗАНО.
' ТУТ СОВЕРШАЮТСЯ НЕКОТОРЫЕ ДЕЙСТВИЯ.
' НЕВАЖНО КАКИЕ.
Case HRESULTS.E_OUTOFMEMORY
MsgBox "Не удаётся совершить операцию: недостаточно памяти!", vbCritical, "Критическая ошибка"
Case CLASS_E_CLASSNOTAVAILABLE
MsgBox "Не удаётся совершить операцию: не удаётся создать объект указанного класса", vbCritical, "Критическая ошибка"
Case HRESULTS.E_INVALIDARG
MsgBox "Ошибка во время совершения операции: неверные аргументы!", vbCritical, "Ошибка"
Case Else
MsgBox "Непредусмотренная ситуация. Ошибка при создании InfoProvider (hresult: 0x" + Right("00000000" + Hex$(hRes), 8) + ")", vbCritical, "Критическая ошибка"
End Select
Видите, я добавил (hresult: 0x" + Right("00000000" + Hex$(hRes), 8) + ")" в код, чтобы в следующий раз при возникновении ошибки я мог узнать значение переменной hRes (т.е. код ошибки в 16-ричном представлении).
Запускаем, и видим следующий шедевр:
Непредусмотренная ситуация. Ошибка при создании InfoProvider (hresult: 0x00000000)
Думаем: если hRes = 0, то почему начинает выполняться Case Else, тогда как должен выполняться Case HRESULTS.S_OK ?