Как узнать номер строки кода, в котором произошла ошибка ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
PavelT100
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 27.06.2002 (Чт) 16:53

Как узнать номер строки кода, в котором произошла ошибка ?

Сообщение PavelT100 » 25.09.2003 (Чт) 10:41

Можно ли на VB6 узнать номер строки кода, в котором произошла ошибка ?

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 25.09.2003 (Чт) 12:44

Erl

boevik
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 23.07.2002 (Вт) 11:44
Откуда: Israel

Сообщение boevik » 25.09.2003 (Чт) 12:57

Можно, если в начале пронумеруешь строки и тогда в Error Handling пиши
Код: Выделить всё
MsgBox "Error at line " & Erl

В инете есть много AddIn для нумерации строк

PavelT100
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 27.06.2002 (Чт) 16:53

Сообщение PavelT100 » 25.09.2003 (Чт) 18:00

В инете есть много AddIn для нумерации строк

А можно подробней, для новичков, освятить эту фразу.

boevik
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 23.07.2002 (Вт) 11:44
Откуда: Israel

Сообщение boevik » 25.09.2003 (Чт) 22:32

Будет поподробнее, но в понедельник.

boevik
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 23.07.2002 (Вт) 11:44
Откуда: Israel

Сообщение boevik » 29.09.2003 (Пн) 9:59

Вот проект, который можно откомпилировать и получить AddIn для нумерации строк кода
Вложения
LineNumber.zip
Source кода AddIn добавления нумерации строк в коде
(17.87 Кб) Скачиваний: 80

PavelT100
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 27.06.2002 (Чт) 16:53

Сообщение PavelT100 » 29.09.2003 (Пн) 10:44

VB6. Скачал, сделал Linenumb.dll. В своем проекте в Project\References... добавил галочку VB Code Line Number Add/Remove. В файл C:\Windows\vbaddin.ini в секцию [Add-Ins32]
добавил строку LineNumbers.Connect=0.
В своем проекте пишу MsgBox "Error at line " & Erl.
При всем при этом выводится надпись "Error at line 0" и от строки не зависит.

boevik
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 23.07.2002 (Вт) 11:44
Откуда: Israel

Сообщение boevik » 29.09.2003 (Пн) 11:16

Зайди в меню Add-Ins->Add-In Manager.
Сделай Load для VB Code Line Numbers Add/Remove
Появится кнопка в меню.
Нажми ее и появится окнo для добавления нумерации строк
Я думаю что дальше разберешься.

PavelT100
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 27.06.2002 (Чт) 16:53

Сообщение PavelT100 » 29.09.2003 (Пн) 16:33

Кнопка в меню Add-Ins появилась. И номера строк я добавил в файл кода. Но после этого все равно
Код: Выделить всё
    MsgBox "Error at line " & Erl
пишет "Error at line 0".
.

boevik
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 23.07.2002 (Вт) 11:44
Откуда: Israel

Сообщение boevik » 29.09.2003 (Пн) 18:00

Конечный код должен выглядить примерно так
Код: Выделить всё
10 On Error GoTo ErrorHandling   'обработчик ошибки

15 Open "c:\1111.txt" For Input As #1
20 Close #1
30 Exit Sub

ErrorHandling:   'начало кода обработки ошибки

40    MsgBox "Error: " & Err.Number & " " & Err.Description & vbNewLine & _
        "Source: " & Err.Source & vbNewLine & _
        "At line " & Erl, vbCritical


PavelT100
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 27.06.2002 (Чт) 16:53

Сообщение PavelT100 » 15.10.2003 (Ср) 11:12

А можно ли узнать номер строки где произошла ошибка, если она произошла во вложенной процедуре
Код: Выделить всё
sub F1()
10 Err.Raise 1, "A", "B"
end sub
sub main()
20 On Error GoTo ErrorGlobal
25 call F1
ErrorGlobal:
30    Call MsgBox("Error at line " & Erl)
end sub

Мне вернет строку номер 25, а хотелось бы 10. Можно, конечно, обрабатывать ошибку в самой процедуре F1, но есть ли другие варианты ?

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 15.10.2003 (Ср) 12:12

Нет, других вариантов нет. Или пиши обработчики в каждой процедуре/функции или довольствуйся тем что есть.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Majestic-12 [Bot] и гости: 2

    TopList