Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как в консоли получать нажатые клавиши?


Автор: кварк 15.4.2005, 10:20
В консольном приложении надо получать коды нажатых клавиш. Как бы это реализовать?
Желательно, без эхо-повтора в консоли.

Read ждет нажатия Enter и выводит эхо на экран. Какие функции использовать?

Автор: Snowy 15.4.2005, 11:13
Это твоя программа, или ты запускаешь стороннюю?
Если стороннюю, то запускай ее через CreateProcess - в нем ты можешь указать устройство ввода, и потом посылать через него клавиши.

Автор: Akella 15.4.2005, 11:43
Помоему read или ReadLn

Автор: кварк 15.4.2005, 14:52
Моя программа, конечно.

что read, что readln ждут нажатия enter. И выводят символ в окно консоли. А это не то, что мне нужно. Мне нужно организовать что-то а-ля цикл обработки сообщений в виндовом приложениии:

Код

инициализация

while [выходить не надо] do
begin
   Что-то делаем
   
   Есть нажатая клавиша? Читаем ее код.
   
   Анализируем нажатую клавишу.
end


Вот меня реализация строчки 7 интересует. Когда-то давно я писал не задумываясь

Код

  while keypressed do read(ch);


А теперь такое не проходит: реакция происходит после нажатия на Enter.

Автор: Dimannn 15.4.2005, 15:40
Незнаю как Delphi, но в Паскале (7.0) була функция ReadKeyж
т.е
Код

while keypressed do ch:=ReadKey;

Автор: Snowy 15.4.2005, 15:51
Вот, держи юнит для работы с консолью.
Там есть пример, как в консоли работать с устройством ввода, на примере ожидания клавиши Esc.
Добавлено @ 15:52
Цитата(Dimannn @ 15.4.2005, 15:40)
while keypressed do ch:=ReadKey;

В Delphi это не работает - отсутствует юнит Crt.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)