Создана динамическая библиотека 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 отображает номер ошибки vbObjectError + &HF1500
независимо от генерируемой ошибки в динамической библиотеке.
Т.е. задавая номер ошибки от vbObjectError + 1 до vbObjectError + 500, при выполнении программы в VB6 всегда выдаёт ошибку vbObjectError + &HF1500.
ПОДСКАЖИТЕ ПОЖАЛУЙСТА, ЧТО НЕВЕРНО?
КАК ПОЛУЧИТЬ ДЕЙСТВИТЕЛЬНЫЙ НОМЕР ОШИБКИ?
P.S. При выполнении команды в динамической бибилиотеке MsgBox Err.Number - vbObjectError VB NET отображает код ошибки 103, а в VB6 - Err.Number = &H80131500.