首页 > 解决方案 > 取消 ReadLn 输入读数

问题描述

我正在运行 ReadLn 的恒定循环以获取命令输入。但是当涉及到多线程时,我遇到了一个问题:

var command: string;

function ThreadTest(p: pointer) : ptrint;
begin
  Delay(500);
  WriteLn('THREAD TEST');
end;  
{...}
BeginThread(@ThreadTest); 
ReadLn(command);

'THREAD TEST' 写在输入字段中。

有什么办法可以防止这种情况发生吗?我不想等待线程完成调用 ReadLn。我必须使用 ReadKey 重写 ReadLn 吗?我将 FreePascal 与 Crt 和 Windows 一起使用。

编辑:我需要将“线程测试”写为新行并将 ReadLn 向下移动 1 个 tcrtcoord,以便正确显示“线程测试”。WriteLn 可以按预期完美运行,除非在 ReadLn 正在进行时调用。

标签: pascalfreepascallazarus

解决方案


推荐阅读