![]() |
|
Модераторы: Akina |
![]()
|
|
| Сувор |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 7.6.2004 Репутация: нет Всего: нет |
1. Запускаю код для VB 6.0:
Sub form_load(): CommonDialog1.CancelError = True: On Error GoTo 100: CommonDialog1.ShowOpen: 100 On Error GoTo 200: CommonDialog1.ShowOpen: 200 End Sub После первого клика на Cancel улетаем на 100 как и ожидаем, а после второго получаем таки сообщение об ошибке! ------- Не понял!? |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Кто же так пишет? Это же невозможно читать.
А вот почему не работает я пока сам не понял. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
CommonDialog1.CancelError = True 'при нажатии на Cancel выбросит ошибку
Нажал Cancel (т.е. выброс ошибки), происходит переход на метку 100. Когда во второй раз нажимается Cancel, возникает вторая ошибка в той же процедуре. При возникновении второй ошибки в той же процедуре, обработка ошибки передается на верхний уровень. Так как выше уровня нет, то VB выбрасывает ошибку. Это объяснение. Сувор, мне не понятно, что ты хотел сделать в этом коде. Объясни подробнее. -------------------- Никогда не говори никогда |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Фишка в том, что у тебя нет обработки ошибки как таковой. Тоесть количество ошибок в коллекции Err больше 1 (Err.Count > 1).
Плюс, как уже сказал боевик, повторное событие возникает в той-же процедуре. Необходимо правильно назначать точки входа и выхода для событий Ошибок!
-------------------- Я желаю всем Счастья! |
|||
|
||||
| Сувор |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 7.6.2004 Репутация: нет Всего: нет |
Что хотел? -Ну это конечно выжимка из моего кода. А хотел я открыть несколько файлов, но некоторых может не быть, но это не смертельно. Ну грузить этим всем юзера по-моему негуманно, я просто предлагаю ему открывать и рассчитываю что при наличии отсутствия он может кликнуть отмену а я распознаю да и пропущу. И тут вдруг такие заморочки! Но попробую как сказали! Thank you very very much!
|
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Блин, хотел тут пару строчек чиркануть и забыл...
Naghual
Err.Resume Next, в последней строке как я понял можно и не писать, т.к. при выходе из процедуры Err должен сам обнулиться. А вообще у меня нет Err.Resume, a есть только Rеsume...
Да в принципе никаких особых проблем здесь я не вижу. Главное после обработки ошибки написать Resume (что не советуют), Resume Next или Resume "label". -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
cardinal
Это не совсем верно. Если форма запускается програмой автоматически (StartUp object: Form), то тогда да. Но если форма, которая содержит эту процедуру была вызвана програмно, да еще и в родительской процедуре установлен перехватчик ошибок, то это событие об ошибке к ней и перенесется! Тоесть, сработает перехват ошибки на строке Form.Show или подобной. Поправье если я не прав -------------------- Я желаю всем Счастья! |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Naghual, прав на 100%.
-------------------- Никогда не говори никогда |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Понял
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Сувор |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 7.6.2004 Репутация: нет Всего: нет |
Нет счастья! Err.Resume Next мой VB 6.0 вообще не сьел -просит вместо Next
выражение, а когда я поставил просто Resume Next, то с обработкой Отмены все вроде прошло, но вот когда я шлепнул "Открыть" (при наличии отсутствия нужного файла) то бедняга впал в такой ступор, что в натуре пришлось питание вырубать! (и если поставить CommonDialog.Flags на &H1000 то все равно также) Ну да бог с ним -загружу этим юзера пусть сам открывает |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Ок. Это он у тебя на последний ругается. Ну и правильно. Мы говорим ему - сбросить ошибку и перейти к следующей строке. Только вот строки следующей НЕТ. Есть конец процедуры. Нужно добавить строку. К примеру такую:
P.S. А может стоит пересмотреть придуманый тобою алгоритм открытия файлов? -------------------- Я желаю всем Счастья! |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |