我得到一个我以前没有看到的错误。
下面是我的代码:
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
的东西。
好了,我在第四次校对后发现了错误xD
我没有把reset(patients)
分配文本文件后,
建议修改错误。
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
例外才会引发消息。