You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Free Pascal/Delphi中临时绑定文件后恢复Input至控制台?

恢复Free Pascal/Delphi中标准Input到控制台的方法

当你通过AssignFile将标准Input临时绑定到文件(如stdin.txt),关闭文件后直接调用ReadLn会触发I/O错误,因为此时Input并未重新关联到控制台输入设备。以下是具体的解决方法:

核心解决步骤

关闭绑定的文件后,需要将Input重新关联到控制台(或对应平台的标准输入设备),并调用Reset完成初始化。

示例代码

var
  x: string;
begin
  // 临时绑定并读取文件内容
  AssignFile(Input, 'stdin.txt');
  Reset(Input);
  ReadLn(x);
  Writeln('从文件读取: ', x);
  CloseFile(Input);

  // 恢复Input到控制台
  {$IFDEF MSWINDOWS}
    AssignFile(Input, 'CON');  // Windows平台用CON指代控制台
  {$ELSE}
    AssignFile(Input, '/dev/stdin');  // Linux/macOS用/dev/stdin
  {$ENDIF}
  Reset(Input);  // 必须调用Reset完成设备初始化

  // 测试控制台输入
  Writeln('请输入内容:');
  ReadLn(x);
  Writeln('你输入的内容: ', x);
end.

关键注意事项

  • 不能省略Reset(Input):AssignFile仅完成关联操作,必须调用Reset才能让Input处于可读取状态。
  • 跨平台适配:不同操作系统的标准输入设备标识不同,通过条件编译可以保证代码在Windows、Linux、macOS下都能正常工作。

内容的提问来源于stack exchange,提问作者Anton Duzenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:12:06