在 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 的实际值 */
我在使用 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 的实际值 */