Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: КАК остановить програму?  (Прочитано 6852 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Uana
Гость
« : 08-12-2004 09:51 » 

В программе написанной на VB6. требуется при выполнении сканировать
введенный текст (лексический анализатор) до первой ошибки.
 Как сделать чтоб после первой ошибке в тексте
программа просто остановилась и дальше не продолжала разбор
пока не исправлю ошибку в тексте.
 Анализатор сделан с помощью матрицы переходов.
Действие для выдачи ошибки запрограммировано очень просто,
Public Sub Act3()
Dim str1 As String
MsgBox ("ошибка!")
End Sub
выводит окно комментария, но после нажатия кнопки на окне комментария
продолжает разбор, а мне надо чтобы программа остановилась я исправила ошибку
и продолжила разбор. Какую команду добавить?
Мне нужно чтоб  выполнение  процедур остановилось, пока я не исправлю ошибку
в тексте, а затем  продолжилось выполнение лексического анализатора.
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 09-12-2004 06:13 » 

Можно посоветовать сделать глобальную переменную типа BOOLEAN
и выставлять ее значение, к примеру, в TRUE при ошибке
в процедуре анализа проверять это значение и работать, если значение FALSE
Public blnError as boolean   'признак ошибки

public sub FormLoad()
  blnError = false   'выставляем начальное значение
end sub

Public Sub Act3()
Dim str1 As String
MsgBox ("ошибка!")
blnError = true          'выставляем признак ошибки
End Sub

Public sub Analis()
  if blnError then exit sub    'если ошибка проверку не проводим
end sub

Public sub Pravka()
   blnError  = false           'если исправили, то снимаем признак ошибки
end sub

так же можно созранять позицию в тексте, где ошибка, чтобы при исправлении оной, начинать проверять не с начала текста, а с указанной позиции
Записан

I Have Nine Lives You Have One Only
THINK!
Uana
Гость
« Ответ #2 : 10-12-2004 07:51 » 

А кроме Exit Sub, какие еще остановки существуют в VB
Записан
blind rain
Гость
« Ответ #3 : 10-12-2004 20:18 » 

Остановки в VB: End, Stop - экстренный останов
Не совсем понятно зачем нужен такой останов?

Почему не использовать конструкцию типа:

On error goto catch:
'алгоритм разбора
...
'в случае нахождения ошибки
err.raise vbCustom+1,'', 'описание ошибки'
'продолжение разбора

'все разобрали
exit sub
catch:
  if Err.Number=vbCustom+1 then
    call ShowMsg (Err.description) 'отобразить сообщение
    call MakeChanges() 'исправить ошибку
    resume next 'ошибка обработана возврат к продолжению разбора
  end if
end sub
 
То есть использовать обработчик ошибки для исправления ошибки :)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines