我得到了一个我以前没见过的错误。
这是我的代码:
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
错误。
答案 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
的例外才会引发消息。