用于读取DELPHI中的txt文件的调试器异常通知错误

时间:2014-08-18 13:14:34

标签: delphi delphi-7

我得到了一个我以前没见过的错误。

这是我的代码:

procedure TfrmPatientViewer.FormCreate(Sender: TObject);
var
  MyArray : array [1..100] of string;
  iCount : Integer;
  Patients : TextFile;
begin
  AssignFile(Patients, 'patients.txt');
  if FileExists('patients.txt') <> True
    then
      begin
        ShowMessage('Patients.txt does not exist, program shutting down');
        Application.Terminate;
      end;
  iCount := 1;
  while not Eof(Patients) do // <-- HERE'S THE ERROR
    begin
      Readln (Patients, MyArray[iCount]);
      redtOut.Lines.Add(MyArray[iCount]);
      inc(iCount);
    end;
end;

错误说:Project Phase3P.exe has raised an exception class ElnOutError with message 'I/O error 104'. Proccess stopped

为什么要这样做,我该怎么做才能让它正常工作?我搜索了一下只能查找不同I / O错误的内容,但不是104错误。

2 个答案:

答案 0 :(得分:1)

好的,我在第四次xD

的校对后发现了我的错误

在分配文本文件后我没有放reset(patients)

答案 1 :(得分:1)

建议编辑错误。

procedure TfrmPatientViewer.FormCreate(Sender: TObject);
var
  MyArray : array [1..100] of string;
  iCount : Integer;
  Patients : TextFile;
begin
  try
    AssignFile(Patients,'patients2.txt');
    reset(Patients);
    iCount := 1;
    while not Eof(Patients) do // <-- HERE'S THE ERROR
      begin
        Readln (Patients, MyArray[iCount]);
        redtOut.Lines.Add(MyArray[iCount]);
        inc(iCount);
      end;
  except
    on E: EInOutError do
    begin
      raise Exception.Create('Patients.txt does not exist, program shutting down');
      Application.Terminate;
    end;
  end;
end;

这样您就不必检查FileExists,如果找不到,则会引发您的异常。
唯一的缺点是只有EInOutError的例外才会引发消息。