Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как прочитать две ветки реестра ? Добавлено: 27.01.04 13:24  

Автор вопроса:  avkiev | ICQ: 226072 

Уважаемые, подскажите, пожалуйста. Есть такой код:

Dim Reg As Object
  Set Reg = CreateObject("WScript.Shell")
  On Error GoTo nex1
  str1 = Reg.RegRead(vet1)
nex1:

  On Error GoTo nex2
  str2 = Reg.RegRead(vet2)
nex2: On Error GoTo 0

Если в реестре нет обоих веток vet1 и vet2, то второй фрагмент приводит к ошибке, не взирая на то, что он упакован в "On Error". Если хотя бы одна ветка существует, то все работает нормально.

Как избежать ошибки если нет обоих веток ?

Заранее благодарен

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #1
Добавлено: 27.01.04 13:50

возможно у тебя ошибка зедсь(возможно!!!!):

nex2: On Error GoTo 0

>

nex2:

On Error GoTo 0

Ответить

Номер ответа: 2
Автор ответа:
 Artificial Intelligence



ICQ: 275368971 

Вопросов: 8
Ответов: 131
 Профиль | | #2 Добавлено: 27.01.04 14:07

Скорей всего это должно выглядеть так:

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)

Ответить

Номер ответа: 3
Автор ответа:
 avkiev



ICQ: 226072 

Вопросов: 48
Ответов: 107
 Профиль | | #3 Добавлено: 27.01.04 14:09
Почему ошибка ? Надо же как то заложиться на то, что второй ветки не существует ?

Ответить

Номер ответа: 4
Автор ответа:
 avkiev



ICQ: 226072 

Вопросов: 48
Ответов: 107
 Профиль | | #4 Добавлено: 27.01.04 14:19

В таком варианте:

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 не существует. Это не приемлемо :)

Ответить

Номер ответа: 5
Автор ответа:
 POMAH



ICQ: 223-574-928 

Вопросов: 0
Ответов: 16
 Профиль | | #5 Добавлено: 27.01.04 14:42

если у тебя нет vet1, то ты попадаешь на метку nex1.Дальше, если у тебя нет vet2, то ты попадаешь не метку nex2.Вот там ты должен написать что делать, если у тебя нет двух веток. И On Error здесь не нужен, т.к. ошибка(отсутствие второй ветки) уже произошла!

Ответить

Номер ответа: 6
Автор ответа:
 Artificial Intelligence



ICQ: 275368971 

Вопросов: 8
Ответов: 131
 Профиль | | #6 Добавлено: 27.01.04 14:43

Сорри, я хотел сказать вот так:

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)

Ответить

Номер ответа: 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

>Сорри, я хотел сказать вот так

А почему вариант с goto не работает ?

>А что ты хочешь делать,  если у тебя нет двух веток в реесре? Создавать их или что?

Нет, создавать ничего не надо. Надо просто прочитать ветки и не вылететь при этом из программы

Ответить

Номер ответа: 9
Автор ответа:
 POMAH



ICQ: 223-574-928 

Вопросов: 0
Ответов: 16
 Профиль | | #9 Добавлено: 27.01.04 15:34

если у тебя нет vet1, то ты попадаешь на метку nex1.Дальше, если у тебя нет vet2, то ты попадаешь не метку nex2.Вот там ты должен написать что делать, если у тебя нет двух веток. И On Error здесь не нужен, т.к. ошибка(отсутствие второй ветки) уже произошла!

Ответить

Номер ответа: 10
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #10
Добавлено: 27.01.04 15:45

в этом случае тебе будет достачно одного

on error resume next

а ошибка была здесь:

on error goto 0 - у тебя не было метки 0:

а вообще лучше иногда дебагом пользоваться =)

Ответить

Номер ответа: 11
Автор ответа:
 avkiev



ICQ: 226072 

Вопросов: 48
Ответов: 107
 Профиль | | #11 Добавлено: 27.01.04 16:03

Вариант с двумя RESUME NEXT работает.

Почему не работает вариант с двумя goto - не могу понять, мистика какая то.

Всем спасибо, проблема решена

Ответить

Номер ответа: 12
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #12
Добавлено: 27.01.04 16:06

причём тут мистика?

ясно же написано: у тебя нет метки 0

и два resume next вообще то необязательно, можно оставить только первый

Ответить

Номер ответа: 13
Автор ответа:
 avkiev



ICQ: 226072 

Вопросов: 48
Ответов: 107
 Профиль | | #13 Добавлено: 27.01.04 16:07

> а ошибка была здесь: on error goto 0 - у тебя не было метки 0

Подожди, этим я просто отменил действие предыдущего On Error. Разве это не верно ?

 

> а вообще лучше иногда дебагом пользоваться =)

Ошибка возникала именно на попытке чтения второй ветки, а не на ON ERROR


Ответить

Номер ответа: 14
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #14
Добавлено: 27.01.04 16:17

Короче используй один Resume Next, а ошибки у тебя из-за твоего СУПЕР-АлгоРИТМА =)

Ответить

Номер ответа: 15
Автор ответа:
 avkiev



ICQ: 226072 

Вопросов: 48
Ответов: 107
 Профиль | | #15 Добавлено: 27.01.04 16:28
Пасиб :)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам