【发布时间】:2014-05-21 06:16:10
【问题描述】:
我的程序以 RunError(5) 退出,这表明它无法访问应该可以访问的文件。我已经检查并且该文件按应有的方式使用,该文件不是只读的,等等。该程序所做的是,如果一个 .dat 文件不存在,它会创建一个文件并将其用于保存内容。如果我运行该程序并且该文件不存在,则创建该文件,但之后,在同一执行中,该程序将无法访问该文件。仅当文件是在当前执行中创建时才会发生这种情况。
这是调用过程的方式(代码很长,但我给你的是前几行,错误发生的地方):
fileName := 'labSave.dat';
CreateFile;
assign(labyrinthFile,fileName);
writeln(CheckFileSize);
然后是每个程序:
procedure Initialize;
begin
fileName := 'labSave.dat';
assign(labyrinthFile,fileName);
end;
procedure CreateFile;
begin
if not FileExists(fileName) then FileCreate(fileName);
end;
function CheckFileSize: integer;
begin
reset(labyrinthFile);
CheckFileSize := FileSize(labyrinthFile);
close(labyrinthFile);
end;
【问题讨论】:
-
它实际上没有被分配,因为我重新安排了我的程序并省略了分配,但现在我修复了它,它仍然做同样的事情,但错误发生在 FileSize() 部分。已编辑的帖子。
-
我说得对吗,如果文件不存在,你
assign()它首先然后在之后创建它?所以创建的文件没有得到assign()。这显然是一个设计错误;) -
你是对的,但我不确定这是否重要,因为在我看来,即使它尚未创建,labyrinthFile 也将始终分配给该名称。无论如何,尝试使用 fileName 创建一个文件,然后将其分配给 labyrinthFile。仍然不行不知道。可能是有原因的。
-
分配是通过将文件绑定到 var 而不是文件名来进行的。因此,分配必须在以任何方式创建之后。您还需要显示您的文件创建代码。
-
我按照您告诉我的方式编辑了帖子,但仍然无法正常工作。