![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выйти из цикла по нажатию клавиши [D5, NT4]
Alfred © (2002-12-12 11:36:00)Как выйти из цикла по нажатию клавиши? Возможно это наивный вопрос, но в СИ это делалось элементарно, а понадобилось в Паскале (Delphi 5) и ничего не получается.
Godness (2002-12-13 21:29:00) [1]Вот черт - не успел ... бывает ... :)
KSergey (2002-12-12 12:58:00) [2]Пожалуйста. Рад, что полегчало.
Alfred (2002-12-12 12:30:00) [3]Еще раз спасибо, KSergey! Попробовал по 1-му варианту и все получилось. Использовал KeyPress - цикл заканчивается по нажатию любой клавиши. Использовал KeyDown - цикл можно закончить по нажатию заданной клавиши, например Esc.
Alfred (2002-12-12 11:56:00) [4]Спасибо за оперативные ответы. СИ++ 2.0. Это было давно (под DOS), но программы до сих пор весьма активно эксплуатируются в непрерывном режиме круглые сутки.
KSergey (2002-12-12 11:50:00) [5]Уточнение: имеется в виду или 1) или 2)
KSergey (2002-12-12 11:48:00) [6]А в каком, интерсно, Си это делалось элементарно? Си - язык. Интересует конкретный компилятор/платформа.
Идет речь и клавиатурных клавишах? Ну как в любом приложении Win32. Например, для Delphi:
1) пишем обработчик KeyPress (или подобного сообщения/события), в котором взводим некий глобальный флаг (напр., уст его в True). Перед циклом флаг сбрасываем (False), внутри цикла делаем Application.ProcessMessages, после которого проверяем состояние флага. Если взвелся - значит произошло событие нажатия клавиши - прерываем цикл.
2) в цикле используем PeekMessage, вылавливая во входной очереди сообщения на вроде WM_CHAR и т.п. Если они там есть - выходим из цикла.
Song (2002-12-12 11:46:00) [7]GetKeyState(), GetAsyncKeyState(), GetConsoleInput()
Для таких вещей используйте Паскаль. В Delphi нелинейное программирование.