Страница: 1 | 2 |
Уважаемые, подскажите, пожалуйста. Есть такой код: Dim Reg As Object On Error GoTo nex2 Если в реестре нет обоих веток vet1 и vet2, то второй фрагмент приводит к ошибке, не взирая на то, что он упакован в "On Error". Если хотя бы одна ветка существует, то все работает нормально. Как избежать ошибки если нет обоих веток ? Заранее благодарен
возможно у тебя ошибка зедсь(возможно!!!!): nex2: On Error GoTo 0 > nex2: On Error GoTo 0 Скорей всего это должно выглядеть так: Dim Reg As Object Set Reg = CreateObject("WScript.Shell") On Error Resume Next str1 = Reg.RegRead(vet1) On Error GoTo 0 str2 = Reg.RegRead(vet2) В таком варианте: Dim Reg As Object Set Reg = CreateObject("WScript.Shell") On Error Resume Next str1 = Reg.RegRead(vet1) On Error GoTo 0 str2 = Reg.RegRead(vet2) программа будет вылетать если ветка2 не существует. Это не приемлемо если у тебя нет vet1, то ты попадаешь на метку nex1.Дальше, если у тебя нет vet2, то ты попадаешь не метку nex2.Вот там ты должен написать что делать, если у тебя нет двух веток. И On Error здесь не нужен, т.к. ошибка(отсутствие второй ветки) уже произошла! Сорри, я хотел сказать вот так: Dim Reg As Object Set Reg = CreateObject("WScript.Shell") On Error Resume Next str1 = Reg.RegRead(vet1) On Error Resume Next str2 = Reg.RegRead(vet2) А что ты хочешь делать, если у тебя нет двух веток в реесре? Создавать их или что? >Сорри, я хотел сказать вот так А почему вариант с goto не работает ? >А что ты хочешь делать, если у тебя нет двух веток в реесре? Создавать их или что? Нет, создавать ничего не надо. Надо просто прочитать ветки и не вылететь при этом из программы если у тебя нет vet1, то ты попадаешь на метку nex1.Дальше, если у тебя нет vet2, то ты попадаешь не метку nex2.Вот там ты должен написать что делать, если у тебя нет двух веток. И On Error здесь не нужен, т.к. ошибка(отсутствие второй ветки) уже произошла! в этом случае тебе будет достачно одного on error resume next а ошибка была здесь: on error goto 0 - у тебя не было метки 0: а вообще лучше иногда дебагом пользоваться Вариант с двумя RESUME NEXT работает. Почему не работает вариант с двумя goto - не могу понять, мистика какая то. Всем спасибо, проблема решена причём тут мистика? ясно же написано: у тебя нет метки 0 и два resume next вообще то необязательно, можно оставить только первый > а ошибка была здесь: on error goto 0 - у тебя не было метки 0 Подожди, этим я просто отменил действие предыдущего On Error. Разве это не верно ? > а вообще лучше иногда дебагом пользоваться Ошибка возникала именно на попытке чтения второй ветки, а не на ON ERROR Короче используй один Resume Next, а ошибки у тебя из-за твоего СУПЕР-АлгоРИТМА
Вопрос: Как прочитать две ветки реестра ?
Добавлено: 27.01.04 13:24
Автор вопроса: avkiev | ICQ: 226072
Set Reg = CreateObject("WScript.Shell")
On Error GoTo nex1
str1 = Reg.RegRead(vet1)
nex1:
str2 = Reg.RegRead(vet2)
nex2: On Error GoTo 0
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #1
Добавлено: 27.01.04 13:50
Номер ответа: 2
Автор ответа:
Artificial Intelligence
ICQ: 275368971
Вопросов: 8
Ответов: 131
Профиль | | #2
Добавлено: 27.01.04 14:07
Номер ответа: 3
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #3
Добавлено: 27.01.04 14:09
Почему ошибка ? Надо же как то заложиться на то, что второй ветки не существует ?
Номер ответа: 4
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #4
Добавлено: 27.01.04 14:19
Номер ответа: 5
Автор ответа:
POMAH
ICQ: 223-574-928
Вопросов: 0
Ответов: 16
Профиль | | #5
Добавлено: 27.01.04 14:42
Номер ответа: 6
Автор ответа:
Artificial Intelligence
ICQ: 275368971
Вопросов: 8
Ответов: 131
Профиль | | #6
Добавлено: 27.01.04 14:43
Номер ответа: 7
Автор ответа:
POMAH
ICQ: 223-574-928
Вопросов: 0
Ответов: 16
Профиль | | #7
Добавлено: 27.01.04 14:49
Номер ответа: 8
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #8
Добавлено: 27.01.04 15:05
Номер ответа: 9
Автор ответа:
POMAH
ICQ: 223-574-928
Вопросов: 0
Ответов: 16
Профиль | | #9
Добавлено: 27.01.04 15:34
Номер ответа: 10
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #10
Добавлено: 27.01.04 15:45
Номер ответа: 11
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #11
Добавлено: 27.01.04 16:03
Номер ответа: 12
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #12
Добавлено: 27.01.04 16:06
Номер ответа: 13
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #13
Добавлено: 27.01.04 16:07
Номер ответа: 14
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #14
Добавлено: 27.01.04 16:17
Номер ответа: 15
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #15
Добавлено: 27.01.04 16:28
Пасиб