Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
ВнизСишный 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c