Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Остановка цикла ..... Добавлено: 16.03.03 17:59  

Автор вопроса:  V!RU$ | Web-сайт: cxodnya.narod.ru | ICQ: 132309822 

Как остановить выполнение цикла на ВБ6,0

У меня при нажатии на 1 кнопку запускается цикл (точнее запускается функция но в этой функции находится цикл  )

А при нажатии на 2 кнопку должен останавливатся цикл ....

и должны выполнятся те действия которые выполняются после окончания цикла ...  Вот сама функция с цыклом:

Function FindOpenPorts()
cmdStop.Enabled = True
    cmdStart.Enabled = False
        pbFind.Max = txtPort2.Text
            pbFind.Min = txtPort1.Text
                lstOpenPorts.Clear
    For PortValue = txtPort1.Text To txtPort2.Text
        wsLock.Close
            pbFind.Value = PortValue
        Timer1.Interval = "100"
            wsLock.Connect wsLock.LocalIP, PortValue
        DoEvents
If PortValue = txtPort2.Text Then
    Timer1.Interval = 0
    cmdStop_Click
End If
    Next
End Function

Если привести полняй код с кнопками то это будет выглядить так:

Private Sub cmdStart_Click()
    If txtPort1.Text >= txtPort2.Text Then
        Title = "Massaga - Port Scanner: Ошибка"
    Style = vbOKOnly + vbCritical + vbDefaultButton1
        Msg = MsgErrorPort
            Response = MsgBox(Msg, Style, Title)
       
    Else
    If txtPort2.Text > "65000" Then
        Title = "Massaga - Port Scanner: Ошибка"
            Style = vbOKOnly + vbCritical + vbDefaultButton1
                Msg = MsgErrorPort
                    Response = MsgBox(Msg, Style, Title)
    Else
            FindOpenPorts
    End If
    End If
End Sub

Private Sub cmdStop_Click()
    cmdStop.Enabled = False
    cmdStart.Enabled = True
' что надо вставить чтобы завершить цикл и выполнить 'дальнейшие действия!
End Sub

Function FindOpenPorts()
cmdStop.Enabled = True
    cmdStart.Enabled = False
        pbFind.Max = txtPort2.Text
            pbFind.Min = txtPort1.Text
                lstOpenPorts.Clear
    For PortValue = txtPort1.Text To txtPort2.Text
        wsLock.Close
            pbFind.Value = PortValue
        Timer1.Interval = "100"
            wsLock.Connect wsLock.LocalIP, PortValue
        DoEvents
If PortValue = txtPort2.Text Then
    Timer1.Interval = 0
    cmdStop_Click
End If
    Next
End Function

Вообщем если что не поняли то тоды задавайте вопрос :))

Ответить

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

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 16.03.03 18:07

Лень разбираться с твоим кодом.

По-моему тут без потоков не обойтись.

Ответить

Номер ответа: 2
Автор ответа:
 muadib



ICQ: 161737977 

Вопросов: 3
Ответов: 9
 Профиль | | #2 Добавлено: 16.03.03 18:31
Из цикла выходить генерируя програмно ошибку, а в обработчик ошибок продолжение проги

Ответить

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



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 16.03.03 20:42

Как же он сгенерит ошибку, если во время выполнения цикла события не обрабатываются.

Ответить

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



Вопросов: 0
Ответов: 8
 Профиль | | #4 Добавлено: 16.03.03 23:39

1. Пишешь переменную типа Boolean (Stopped)

2. Для кнопки cmdStop:

Stopped = True

3. В цикле (в конце или в начале) пишешь

if Stopped = True Then Exit For

Вот так :)

Ответить

Номер ответа: 5
Автор ответа:
 V!RU$



ICQ: 132309822 

Вопросов: 24
Ответов: 54
 Web-сайт: cxodnya.narod.ru
 Профиль | | #5
Добавлено: 17.03.03 14:23

JBit большое спасибо :)) всё получилось ....

Ответить

Страница: 1 |

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



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