КАК ПОЛУЧИТЬ ДЕЙСТВИТЕЛЬНЫЙ НОМЕР ОШИБКИ при выполнении команды в динамической бибилиотеке MsgBox(Err.Number - vbObjectError), если VB NET команда MsgBox отображает код ошибки верный код ошибки 103, а в VB6 - код ошибки 988416.
Например, создана динамическая библиотека dsaLib с модулем класса clsDSA. Библиотека поддерживает регистрацию для COM-взаимодействия, т.е. при компиляции создаются два файла dsaLib.dll и dsaLib.tlb.
Допустим, что в VB NET в теле функции LoadData класса clsDSA при обработке исходных данных генерируется ошибка.
- Код: Выделить всё
Err.Raise(vbObjectError + 103, "dsaLib\clsDSA\LoadData", "Не соответствие размеров x и y")
В VB6 имеется вызов функции, например чтения данных
- Код: Выделить всё
Sub Main
Dim x() as Double, y() as Double
Dim dsa As New dsaLib
On Error Goto 1
call dsa.LoadData(App.path & "data.dat", x, y)
Exit Sub
1: MsgBox Err.Number & ": " & Err.Description
End Sub
При компиляции и выполнении алгоритма функция MsgBox отображает номер ошибки 988416 независимо от генерируемой ошибки в динамической библиотеке. Т.е. задавая номер ошибки от vbObjectError + 1 до vbObjectError + 500, при выполнении программы в VB6 всегда выдаёт ошибку 988416.