运行时错误104 Pascal

时间:2017-10-27 05:55:11

标签: pascal freepascal

我是非常新的使用文件,我真的很难解决这个问题,任何帮助都会很棒。 似乎错误来自我的读取数组函数但不完全 我当然也不确定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.

1 个答案:

答案 0 :(得分:4)

您不知道该错误的含义。我也不能脱离头顶。所以,让我们在文档中查找并找出答案。网络搜索将我们带到这里:https://www.freepascal.org/docs-html/user/userap4.html

  

文件未打开输入

     

如果文件未通过重置打开,则由Read,BlockRead,Eof,Eoln,SeekEof或SeekEoln报告。

您有来电以错误的方式打开文件。致电Reset打开阅读,Rewrite打开以供写作。

注意:

  • 从0循环到count将执行count + 1次迭代。我希望看到你从0循环到count - 1
  • 您无法检查阵列是否足够长。因此,您可能会面临缓冲区溢出的风险。动态数组可以避免这种情况。
  • 当您将内容打印到控制台时,不清楚为什么再次打开文件的原因。
  • 您可以自己查找错误代码。下次遇到这样的错误时,请提示进行网络搜索。