Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вниз

Як вийти з циклу після натискання клавіші Знайти схожі гілки


Alfred   (2002-12-12 11:36) [0]

Как выйти из цикла по нажатию клавиши? Возможно это наивный вопрос, но в СИ это делалось элементарно, а понадобилось в Паскале (Delphi 5) и ничего не получается.



Song   (2002-12-12 11:46) [1]

GetKeyState(), GetAsyncKeyState(), GetConsoleInput()
Для таких вещей используйте Паскаль. В Delphi нелинейное программирование.



KSergey   (2002-12-12 11:48) [2]

А в каком, интерсно, Си это делалось элементарно? Си - язык. Интересует конкретный компилятор/платформа.
Идет речь и клавиатурных клавишах? Ну как в любом приложении Win32. Например, для Delphi:
1) пишем обработчик KeyPress (или подобного сообщения/события), в котором взводим некий глобальный флаг (напр., уст его в True). Перед циклом флаг сбрасываем (False), внутри цикла делаем Application.ProcessMessages, после которого проверяем состояние флага. Если взвелся - значит произошло событие нажатия клавиши - прерываем цикл.
2) в цикле используем PeekMessage, вылавливая во входной очереди сообщения на вроде WM_CHAR и т.п. Если они там есть - выходим из цикла.



KSergey   (2002-12-12 11:50) [3]

Уточнение: имеется в виду или 1) или 2)



Alfred   (2002-12-12 11:56) [4]

Спасибо за оперативные ответы. СИ++ 2.0. Это было давно (под DOS), но программы до сих пор весьма активно эксплуатируются в непрерывном режиме круглые сутки.



Alfred   (2002-12-12 12:30) [5]

Еще раз спасибо, KSergey! Попробовал по 1-му варианту и все получилось. Использовал KeyPress - цикл заканчивается по нажатию любой клавиши. Использовал KeyDown - цикл можно закончить по нажатию заданной клавиши, например Esc.



KSergey   (2002-12-12 12:58) [6]

Пожалуйста. Рад, что полегчало.



Godness   (2002-12-13 21:29) [7]

Вот черт - не успел ... бывает ... :)



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вгору





Пам'ять: 0.56 MB
Час: 0.027 c
1-74739
Yurik
2002-12-13 16:43
2002.12.23
Run-time


3-74557
Ton2
2002-12-04 12:00
2002.12.23
Запис Null-значення в поле boolean


3-74600
REP
2002-12-05 08:14
2002.12.23
Lock file has grow too large


14-74973
romychk
2002-12-01 20:57
2002.12.23
Мобільний телефон


14-74964
Vopros
2002-12-03 12:17
2002.12.23
Де моя гілка?





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська