www.map-info.ru :: Просмотр темы - помогите с обработкой ошибки
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
sysrepos



Зарегистрирован: 22.10.2012
Сообщения: 39

СообщениеДобавлено: Вт Май 28, 2013 11:41 am    Заголовок сообщения: помогите с обработкой ошибки Добавить ответ со ссылкой на данный текст

помогите пожалуйста разобраться с обработчиком ошибок (справку читал)
вариант1:
Код:
Sub  proc1
Dim str As String

OnError GoTo no_states
Open Table "red1"

no_states:
note "error"
str=FileOpenDlg("","","TAB","opn states ")
resume after_mapfrom

after_mapfrom:
OnError GoTo 0

note "продолжение программы"
End Sub


в первом варианте в случае возникновения ошибки (при невозможности открыть файл, обработчик правильно срабатывает)
а вот в случае если Open Table "red1" смог открыть таблицу, то выдается сообщение
"Встретился оператор Resume вне обработчика ошибок. Программа прервана."


вариант2
Код:

Dim str As String

OnError GoTo no_states
str = "red1"

after_mapfrom:
Open Table str
OnError GoTo 0


Exit Sub
no_states:
str=FileOpenDlg("","","TAB","Открытие таблицы states ")
resume after_mapfrom

во 2 варианте, при возможности открыть таблицу, таблица открывается, если нет, то обработчик срабатывает
и таблица открывается с помощью FileOpenDlg, но если в диалоге FileOpenDlg - нажать отмена то опять открывается
диалог FileOpenDlg

Как в таких случаях нужно правильно писать код, чтобы ошибки обрабатывались корректно?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Вт Май 28, 2013 12:57 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

м.б. так

Sub proc3
Dim str As String
str = "red1"
OnError GoTo er1
start2:
Open Table str
OnError GoTo 0

note "продолжение программы"

exit sub
er1:
str=FileOpenDlg("","","TAB","Открытие таблицы states")
if len(str)=0 then exit sub end if
resume start2
End Sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
sysrepos



Зарегистрирован: 22.10.2012
Сообщения: 39

СообщениеДобавлено: Вт Май 28, 2013 1:46 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

спасибо
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru