Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Выход из цикла |
Автор: NewDima 2.3.2006, 08:01 |
Нужно предусмотреть выход из цикла при движении мышью или нажатии на любую клавишу ![]() Repeat ... ... ... Until ???. Как это сделать? |
Автор: Ozzя 2.3.2006, 09:40 |
Break (procedure) Terminates a for, while, or repeat statement. Remarks: Causes the innermost enclosing for, while, or repeat statement to be exited immediately. Is similar to a goto statement addressing a label just after the end of the innermost enclosing repetitive statement. The compiler will report an error if a call to Break is not enclosed by a for, while, or repeat statement. |
Автор: Dian 2.3.2006, 09:41 | ||
Флаг ставишь по нажатию на кнопку и т.п. Обрати внимание, что поток, выполняющий цикл будет занят. Если он единственный, то некому будет обрабатывать сообщения. Один из вариантов - явно вызывать Application.ProcessMessages в цикле |
Автор: Ozzя 2.3.2006, 10:45 |
Dian, Для цикла repeat .. until есть нюанс - сначала выполняется тело цикла, и затем проверяется условие окончания цикла. В данном случае, при выходе по флажку, может случиться так, что в координатах мыши (переменной, в которую будет занесено значение_нажатой_клавиши) окажутся последующие значения. Добавлено @ 10:46 break же приводит к немедленному выходу из цикла. |
Автор: Snowy 2.3.2006, 11:48 | ||
|
Автор: Демо 2.3.2006, 14:06 | ||
Автору ведь надо обрабатывать движение мыши. Вот только что за цикл такой, который нужно прерывать при обращении пользователя к графическому интерфейсу. Мне кажется, что такой цикл было бы логичнее вынести в Application.OnIdle. Например:
|
Автор: Snowy 2.3.2006, 14:28 |
В моем варианте ничего обрабатывать не нужно. Система сама скажет, трогал юзер мышу или клаву или нет. Остальное нам не интересно. |