На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Обработка ошибок в цикле , не работает обратбока ошибок в цикле
    Проблема в том что стандартная обрабока типа
    ExpandedWrap disabled
      on error goto ...

    не работает в цикле. например когда одна и таже ошибка повторяется более одного раза обработчик ошибок не работает, а ошибка вылетает от самого компилятора!!!

    ExpandedWrap disabled
      For c = 1 To 2
       
        On Error GoTo 2
        ChDir ("111")
       
      2:
      Next c

    Вот на этом простом примере если доступа к данной папке нет то при таком раскладе компилятор выкидывает ерор. Если сделать цикл от 1 до 1, то есть повтор один раз то обработчик срабатывает.
    Как сделать так что бы обработка происходила независимо от количества попыток доступа к данной папке
      ExpandedWrap disabled
        Private Sub Form_Load()
        sub1:
            On Error GoTo erh
            q = 0
            a = 1 / q
        GoTo sub2
        erh:
            q = 1
            Resume
        sub2:
            On Error GoTo erh2
            a = 1 / 0
            Exit Sub
        erh2:
            Resume Next
        End Sub

      выполни этот код построчно (нажимая F8), поймёшь фишку. (пока не сделал возврат из обработки, новые ошибки обрабатывать нельзя.)

      в данном случае - оцени конструкцию вида
      ExpandedWrap disabled
        Debug.Print LCase(Dir("c:\windows", vbDirectory)) = LCase("windows")
        Если код позволяет, то можно попробовать так:
        ExpandedWrap disabled
          Option Explicit
           
          Private Sub Form_Load()
          Dim i As Long
           
              For i = 1 To 10
                  Call ERRinside(i)
                  'здесь любые действия не вызывающие ошибок
                  MsgBox i & ": итерация успешна"
              Next i
              End
          End Sub
           
          Private Sub ERRinside(ByVal lArg As Long)
          Dim dummy As Long
          On Error GoTo ERR_LBL
              
              dummy = lArg / 0
              'здесь любые другие действия с ошибками
              
          ERR_LBL:
              'здесь обработка ошибок
              MsgBox lArg & ": ошибка обработана"
          End Sub
          Все я понял главное сделать resume next и вся проблема решается. Большое спасибо
            ExpandedWrap disabled
                On Error Resume Next
               
                For c = 1 To 2
                  Call ChDir("111")
                  If Err.Number <> 0 Then
                    Call Err.Clear
                    GoTo 2
                  End If
              2:
                Next c
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0253 ]   [ 15 queries used ]   [ Generated: 18.05.24, 09:36 GMT ]