7 вложенных FOR, как выйти из цикла(висимс)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Wildwhiteash
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.06.2007 (Чт) 17:02
Откуда: Украина, Николаев

7 вложенных FOR, как выйти из цикла(висимс)

Сообщение Wildwhiteash » 20.09.2007 (Чт) 13:24

Предварительно из txtBox по глобальным переменным расталкиваются значения.
Запускается конструкция из семи вложенных циклов FOR
Собственно в цилклах формируются циферки и через I/O-драйвер отправляются в железку, и от нее ожидается ответ.
Когда ответ получен, переходим к следующему NEXT

Теперь о проблеме
пока идет перебор в циклах форма не реагирует на нажатие кнопки "стоп".
А очень уж хочется получить возможность не только запускать, но и останавливать процесс
Присоветуйте что нибудь.

В аттаче исходник.
(камментов в исходнике просьба не пугаться)
Вложения
Search_Cmd.zip
(83.01 Кб) Скачиваний: 51

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 20.09.2007 (Чт) 13:27

Дык, DoEvents и флаг на уровне формы.
Весь мир матрица, а мы в нем потоки байтов!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 20.09.2007 (Чт) 13:57

Дык, алгоритм переписать. Ибо, куда столько уровней вложенности то?
I don't understand. Sorry.

Wildwhiteash
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.06.2007 (Чт) 17:02
Откуда: Украина, Николаев

Сообщение Wildwhiteash » 20.09.2007 (Чт) 14:10

Viper
Дык, DoEvents и флаг на уровне формы

Если можно приведите пожалуйста пример.:oops:

RayShade
Ибо, куда столько уровней вложенности то?

Предложите вариант перебора 5-ти 16-битных значений и 2-х 8-битных
У меня не возникло другого варианта кроме "матрёшки" из цилков For

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 20.09.2007 (Чт) 14:29

гм... как то так, в упрощенном виде

Код: Выделить всё
Private b_Cancel As Boolean
....
Private Sub btnCancel_Click()
    b_Cancel = True
End Sub
....

For i = 0 To 1000000
DoEvents
....
If b_Cancel Then
    Exit For
End If
Next i
Весь мир матрица, а мы в нем потоки байтов!

Wildwhiteash
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.06.2007 (Чт) 17:02
Откуда: Украина, Николаев

Сообщение Wildwhiteash » 12.10.2007 (Пт) 13:14

Вобщем DoEvents с горем пополам решил вопрос.
Присоветовали еще один вариант но не пробовал
суть примерно такова
H=CreateEvent(nil,FALSE,FALSE,nil)
WaitForSingleObject(H,20)
Делаем событие которое никогда не произойдет
а потом его ждем
пока ждем форма перестает висеть и начинает реагировать

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Сообщение udpn » 15.10.2007 (Пн) 14:02

пореже с этой апишкой, обычно из-за криворукости программистов (или тупой документации?) появляются очень интересные эффекты. Особенно заметно на старых платформах (95, 98)

DoEvents вызывать надо бы не в каждом проходе цикла, а так раз на 10000 проходов. Дело в том, что это - очень медленный оператор. Вызовы в цикле могут замедлить прогу раз несколько раз.
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 96

    TopList