Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08 / 5 сообщений из 5, страница 1 из 1
15.08.2019, 11:52
    #39849684
Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08
Всем привет. В очередной раз столкнулся с ошибками после обновления Windows. На этот раз "зацепило" массивы, а именно пустые массивы ParamArray. Для примера сформируем такой массив с помощью простой функции:
Код: vbnet
1.
2.
3.
4.

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

Dim v
v = ParamArray_Variant
Для v:
  • IsMissing(v) = True
  • IsArray(v) = True LBound(v) = 0 UBound(v) = -1
Код: vbnet
1.
2.
3.

Dim a()
a = ParamArray_Variant 'Здесь нас ждет сюрприз в виде ошибки 5 "Invalid procedure call or argument".
Но если ParamArray массив не пустой, то все хорошо:
Код: vbnet
1.
2.
3.

Dim b()
b = ParamArray_Variant(1) 'ОК
Теперь нельзя просто взять и присвоить обычному массиву значение произвольного массива ParamArray. Нужно обязательно проверять на IsMissing. Например так:
Код: vbnet
1.
2.
3.
4.

Dim a()
Dim v: v = ParamArray_Variant
If Not VBA.IsMissing(v) Then a = v
Проблемные обновления вышли 13.08.2019 на всех платформах, включая Windows 10. Скорее всего был затронут код в oleaut32.dll . С уважением, Павел
...
Рейтинг: 0 / 0
16.08.2019, 05:42
    #39850107
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08
До меня, скорее всего, обновление еще не дошло, поэтому все работает. Для работы с массивами параметров использую такую функцию, она всегда возвращает массив
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Function ParamArrayDelegated(ParamArray prms() As Variant) As Variant
    Dim arrPrms() As Variant, arrWrk() As Variant
    'When prms(0) is Array, supposed is delegated from another function
    On Error GoTo ErrorHandler
    arrPrms = prms
    If UBound(arrPrms) >= 0 Then
        Do While VarType(arrPrms(0)) >= vbArray And UBound(arrPrms) < 1
            arrWrk = arrPrms(0)
            arrPrms = arrWrk
            If UBound(arrPrms) < 0 Then
                Exit Do
            End If
        Loop
    End If
    ParamArrayDelegated = arrPrms
ExitHere:
    Exit Function
ErrorHandler:
    Debug.Assert Not (STOP_AT_ERROR And IS_DEV) '>> remove in release
    Err.Raise Err.Number, "ParamArrayDelegated of bas_Utilities", Err.Description & vbCrLf & "in ParamArrayDelegated of bas_Utilities at " & Erl
    Resume '>> remove in release
End Function
...
Рейтинг: 0 / 0
16.08.2019, 06:32
    #39850110
an45liz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08
https://support.microsoft.com/ru-ru/help/4512506/windows-7-update-kb4512506
изучают проблему:
After installing this update, applications that were made using Visual Basic 6 (VB6), macros using Visual Basic for Applications (VBA), and scripts or apps using Visual Basic Scripting Edition (VBScript) may stop responding and you may receive an "invalid procedure call error."
...
Рейтинг: 0 / 0
29.08.2019, 17:36
    #39855298
Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08
Здравствуйте.

В статье Sudden “Invalid procedure call or argument” error in VBA описаны различные варианты использования пустых массивов в VBA, которые после обновлений Windows перестали работать.

Также есть есть ссылки на патчи. Windows 10 1903 патча пока не имеет.

Основные рекомендации - откатить обновления, подождать новые версии обновлений без этих ошибок.
Также вы можете установить доступные патчи, которые уже выпущены.

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

С уважением,
Павел
...
Рейтинг: 0 / 0
30.08.2019, 23:20
    #39855895
Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08
Здравствуйте,

Наконец-то выпущено обновление и под Windows 10 1903.
August 30, 2019—KB4512941 (OS Build 18362.329)

С уважением,
Павел
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Появилась ошибка 5 "Invalid procedure call or argument" после обновлений Windows 2019-08 / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]