有人可以告诉我为什么我得到一个End_Error异常,如果我有一个循环在它到达此点之前选择退出,我不会看到我如何越过文件的末尾。如果有一个简单的解决方案,我很乐意听到它,我已经被困了一段时间,无限的弦不是我真正的强项。
with Ada.Text_IO;
use Ada.Text_IO;
with Ada.Strings.Unbounded;
use Ada.Strings.Unbounded;
with Ada.Strings.Unbounded.Text_IO;
use Ada.Strings.UNbounded.Text_IO;
procedure checker is
InWord : Unbounded_String;
dictionary : File_Type;
count : Integer;
begin
Ada.Text_IO.Open
(File => dictionary, Mode => In_File, Name => "dictionary.txt");
loop
exit when End_of_File;
InWord := Get_Line(File => dictionary);
Put(InWord);
New_Line;
end loop;
end checker;
raised ADA.IO_EXCEPTIONS.END_ERROR : a-textio.adb:690
答案 0 :(得分:4)
你有
exit when End_of_File;
但是因为你在输入文件上寻找EOF,它应该是
exit when End_Of_File(File => Dictionary);
我不确定为什么你会看到你做的效果 - 当我尝试它时,没有任何事情发生,直到我键入几个RET然后我得到了End_Error
例外。
如您所见,它与字符串无关,无关紧要或其他方式!
答案 1 :(得分:2)
如the ARM中所述,不带参数的End_Of_File引用当前输入文件。
在您的情况下,它只是指标准输入而不是您的文件。
考虑到Simon的回答和你得到的行为,我认为你使用你的程序重定向标准输入(类似“cat myFile.txt | checker”)。我是对的吗?