运行时错误 104 帕斯卡

Runtime error 104 Pascal

我对使用文件还很陌生,我真的很难解决这个问题,任何帮助都会很棒。 似乎错误来自我的读取数组函数,但不完全是 当然我也不确定 104 错误的真正含义 提前致谢

 program ReadFromFile;


type
    lineArray = array [0..19] of String;

procedure PrintArray(lines: lineArray);
var
    i: Integer;
begin
    for i:=0 to High(lines) do
    begin
        WriteLn('Text is: ', lines[i], ' Line number is: ', i);
    end;
end;

function ReadArray(var myFile: TextFile):lineArray;
var 
    count : Integer;
    lines : lineArray;
    i: Integer;
begin
    ReadLn(myFile, count);
    for i := 0 to count do
    begin
        ReadLn(myFile, lines[i]);
    end;
    result := lines;
end;

procedure Main();
var
    myFile: TextFile;
    line: lineArray;
begin

    AssignFile(myFile, 'mytestfile.dat');
    ReWrite(myFile);
    line:=ReadArray(myFile);
    Close(myFile);

    AssignFile(myFile, 'mytestfile.dat');
    Reset(myFile);
    PrintArray(line);
    Close(myFile);
end;

begin
  Main();
end.

你不知道那个错误是什么意思。我也没有忘记。所以,让我们在文档中查找并找出答案。网络搜索将我们带到这里:https://www.freepascal.org/docs-html/user/userap4.html

File not open for input

Reported by Read, BlockRead, Eof, Eoln, SeekEof or SeekEoln if the file is not opened with Reset.

您要求以错误的方式打开文件。调用Reset打开读取,Rewrite打开写入。

备注:

  • 从 0 循环到 count 将执行 count + 1 次迭代。我希望看到你从 0 循环到 count - 1
  • 你没有检查你的数组是否足够长。因此,您 运行 缓冲区超过 运行 的风险。动态数组可以避免这种情况。
  • 不清楚为什么在将内容打印到控制台时第二次打开该文件。
  • 您可以自己查找错误代码。下次遇到此类错误时,请根据提示进行网络搜索。