当我这样做时:
var ch: char;
read(ch);
仅当我按“输入”时,命令“读取”才会退出。输入字符后,如何使读回立即返回?
您使用错误的功能。读取是标准(旧式Pascal)功能的一部分,可从标准输入或文件中读取内容。如您所见,它是基于线条的。
解决方案在Windows下解决问题的一种方法是使用控制台API,尤其是像这样的ReadConsoleInput:
program ReadConsoleInputDemo;
{$APPTYPE CONSOLE}
uses
System.Sysutils, Winapi.Windows;
var
Event : TInputrecord;
EventsRead : DWORD;
Done : Boolean;
begin
WriteLn('Type something, ESC ends program');
Done := False;
repeat
ReadConsoleInput(GetStdhandle(STD_INPUT_HANDLE),
Event, 1, EventsRead);
if Event.Eventtype = key_Event then begin
if Event.Event.KeyEvent.bKeyDown then begin
Done := Event.Event.KeyEvent.wVirtualKeyCode = VK_ESCAPE;
if (not Done) and (Event.Event.KeyEvent.AsciiChar <> #0) then
WriteLn('You typed: ', Event.Event.KeyEvent.AsciiChar);
end;
end;
until Done;
end.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句