-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08

Четверг, 15 Августа 2019 г. 11:52 + в цитатник
Всем привет.

В очередной раз столкнулся с ошибками после обновления Windows.
На этот раз "зацепило" массивы, а именно пустые массивы ParamArray.

Для примера сформируем такой массив с помощью простой функции:
Private Function ParamArray_Variant(ParamArray Params())
    ParamArray_Variant = Params
End Function
Конечно можно работать с Params напрямую. Но я буду использовть эту функцию только для того, чтобы сформировать нужный массив.

Пусть далее будет:
Dim v
v = ParamArray_Variant

Для v:
  • IsMissing(v) = True
  • IsArray(v) = True
  • LBound(v) = 0
  • UBound(v) = -1

Теперь определим простой массив и попробуем сделать то же самое действие:
Dim a()
a = ParamArray_Variant 'Здесь нас ждет сюрприз в виде ошибки 5 "Invalid procedure call or argument".

Но если ParamArray массив не пустой, то все хорошо:
Dim b()
b = ParamArray_Variant(1) 'ОК

Теперь нельзя просто взять и присвоить обычному массиву значение произвольного массива ParamArray.

Нужно обязательно проверять на IsMissing. Например так:
Dim a()
Dim v: v = ParamArray_Variant
If Not VBA.IsMissing(v) Then a = v

Проблемные обновления вышли 13.08.2019 на всех платформах, включая Windows 10. Скорее всего был затронут код в oleaut32.dll.

С уважением,
Павел

https://www.sql.ru/forum/1315989/poyavilas-oshibka-5-invalid-procedure-call-or-argument-posle-obnovleniy-windows-2019-08


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку