Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Сишный kbhit() или паскалевский ReadKey в дельфях?   Найти похожие ветки 

 
NetKnight ©   (2003-07-21 21:42) [0]

Народ, толи я затупил, толи дейчтвительно о такой функции забыли в дельфях... Как в консольном режиме узнать, что юзер нажал клавишу и какую? (Не Read, а функция которая не ждёт нажатия, а просто проверяет)
В Борладовском паскале 7.0 была функция ReadKey из библиотеки Crt, а сишным аналогом была kbhit(), вроде stdio.h
Бибиотеки Crt в дельфи нет!

Как эту проблему решить в дельфях?


 
T2 ©   (2003-07-21 21:48) [1]

Procedure T_Gu.GuPause; {Pause ~~}
Begin
Repeat FlushConsoleInputBuffer(GuInHandle);Gudw:=0;Gukey:=0;
Application.ProcessMessages;Sleep(100);PeekConsoleInput(GuInHandle,GuBuf,1,Gudw);
//guouttext(12,12,10,inttostr(GuBuf.Event.KeyEvent.wVirtualKeyCode)+" "); ///~~~~~~~~~~~~~~~~~~~~~~~~~~
Until (GuBuf.Event.KeyEvent.wVirtualKeyCode=13)Or(GuBuf.Event.KeyEvent.wVirtualKeyCode=27);
If GuBuf.Event.KeyEvent.wVirtualKeyCode=27 Then Destroy;
FlushConsoleInputBuffer(GuInHandle);Gudw:=0;Gukey:=0;
Sleep(100);GuBuf.Event.KeyEvent.wVirtualKeyCode:=0;GuBuf.Event.KeyEvent.bKeyDown:=false;
End;

В консоле все намного по другому - даю кусок своей функции,
основу должен понять - дальше сам. Сам я долго с таким вопросом долбался. :)


 
Palladin ©   (2003-07-21 21:51) [2]

ReadConsoleInput + F1


 
NetKnight ©   (2003-07-24 16:06) [3]

--> T2 & Palladin
А как получить ConsoleHandle?


 
NetKnight ©   (2003-07-25 02:48) [4]


function ReadConsoleKey : Char;
var
hConsoleInput : Cardinal;
lpBuffer : _Input_Record;
nLength : Cardinal;
lpNumberOfEventsRead : Cardinal;
begin
lpNumberOfEventsRead := 0;
nLength := 1;
if not PeekConsoleInput(hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead) then write("error!");
GetLastError;
Result := lpBuffer.Event.KeyEvent.AsciiChar;
end;

Не работает, что делаю не так?



Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
3-20380
AkaSaint
2003-07-14 18:15
2003.08.07
Как в ADOTable обновить из БД только одну запись?


6-20654
Basilio
2003-05-30 09:58
2003.08.07
Проблемы с записью в сокет непосредственно после его открытия


14-20728
vidiv
2003-07-19 12:47
2003.08.07
Как <IFrame> сделать по высоте такой, чтобы влез весь документ...


3-20385
Avreliy
2003-07-15 17:51
2003.08.07
Средство для создания отчётов.


1-20543
NetKnight
2003-07-23 16:01
2003.08.07
Как упростить алгоритм.