在Ada if语句

时间:2016-03-11 19:49:13

标签: ada

我有一个文本文件,我将其拆分为两个文件。我将逐行查找输入文件以查找CRLF,并使用if语句在找到CRLF时执行操作。这是带有CRLF的输入文件的简短剪辑。我是Ada的新手,所以如果有更好的方法,请告诉我

message format with CRLF showing

我希望能够在可能的情况下使用ASCII.CR和ASCII.LF。

我可以使用下面的代码获得自己的单个CR,但是在尝试获取CRLF行时遇到问题。

procedure readFrom is
   My_File  : FILE_TYPE;
   File_Name : String := "input.txt";
   CR : String := "" & ASCII.CR;

   begin

      open(My_File, In_File, File_Name);
      create(out1, Out_File, "out1.txt";
      create(out, Out_File, "out2.txt";

      while not Ada.Text_IO.End_Of_File (My_File) loop
        declare
         line : String := Get_Line(My_File);
        begin

           if (line = CR) then
              <*search the line and do stuff*>
           end if;
        end:
      end loop:
      Close(My_File);

end readFrom;

2 个答案:

答案 0 :(得分:3)

那不是真正的文本文件;不是那种行分隔符的混合!

更好地使用Ada.Streams.Stream_IOARM A.12.1)并使用Character’Read,直到您获得End_Error例外。

答案 1 :(得分:1)

Get_Line已经剥离了行分隔符(在Windows平台上是CRLF,或者在Linux或其他* nix平台上只是LF),因此您的方法无法正常工作。尝试逐字逐句阅读。

此外,不推荐使用ASCII包。您最好使用Ada.Characters.Latin_1

(当然最好让运行时决定使用哪个行终止符与Get_Line然后处理该行,但我认为这是一个家庭作业,找到行尾是一个要求?)