在 Pascal 中找不到文件(重置功能)

File not Found in Pascal (Reset function)

我在使用 Pascal 从 .txt 文件中读取文本时遇到问题。当我尝试 运行 代码时,我得到一个 EXITCODE = 2(找不到文件)。它在重置功能上崩溃。

var
  name: string;
  c: char;
  f: text;

begin
   name := 'config.txt';
   assign(f,name);
   reset(f);
   while not eof(f) do begin
     read(f,c);
     write(c)
   end
end.

如果我提供完整的地址来提交,它将按预期工作。当地址是相对的(如图所示)时就会出现问题。

代码和文本文件都在同一目录中。

我使用 FreePascal 编译器 2.6.4 版

正如@Marco van de Voort 在评论中所说,问题出在 FPC 运行 .exe 在其默认目录中,而不是保存它的目录中。

要解决该问题,您可以这样做(您需要将 SysUtils 添加到 Uses 子句中):

CurrentPath := GetCurrentDirectory;
If DirectoryExists(CurrentPath) And FileExists('config.txt') Then...

这将确保您与可执行文件位于同一路径中,并确保文件 'config.txt' 实际上位于同一目录中。这是我在 Linux 和 Windows 下用来验证目录中是否存在文件的方法。

希望对您有所帮助!

启用这个:

Options -> Enviroment -> Preferences -> [Options] Change dir on open

...并且要开心 ;)

/* Turbo Pascal 7.0 的实际值 */