在Ada if语句中使用回车符和换行符

在Ada if语句中使用回车符和换行符,ada,Ada,我有一个文本文件,我正在分裂成两个文件。我将逐行检查输入文件,查找CRLF,并使用if语句,在找到CRLF时执行操作。下面是使用CRLFs对输入文件的一个简短剪贴。我是Ada的新手,所以如果有更好的方法,请告诉我 如果可能的话,我希望能够在一个应用程序中使用ASCII.CR和ASCII.LF 我可以用下面的代码获得单独的CRs,但是我在尝试获取CRLF行时遇到了问题 procedure readFrom is My_File : FILE_TYPE; File_Name : St

我有一个文本文件,我正在分裂成两个文件。我将逐行检查输入文件,查找CRLF,并使用if语句,在找到CRLF时执行操作。下面是使用CRLFs对输入文件的一个简短剪贴。我是Ada的新手,所以如果有更好的方法,请告诉我

如果可能的话,我希望能够在一个应用程序中使用ASCII.CR和ASCII.LF

我可以用下面的代码获得单独的CRs,但是我在尝试获取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;
从中读取的过程是
我的文件:文件类型;
文件名:字符串:=“input.txt”;
CR:String:=“”&ASCII.CR;
开始
打开(我的文件,在文件中,文件名);
创建(out1,Out_文件,“out1.txt”;
创建(out,out_)文件“out2.txt”;
而不是Ada.Text\u IO.End\u Of_File(My_File)循环
声明
行:字符串:=获取行(我的文件);
开始
如果(直线=CR),则
如果结束;
完:
结束循环:
关闭(我的_文件);
结束读取;

Get_Line
已经去掉了行分隔符(在windows平台上是CRLF,在linux或其他*nix平台上是LF),因此您的方法不起作用。请尝试逐个字符读取

另外,
ASCII
软件包已被弃用。最好使用
Ada.Characters.Latin\u 1


(当然,最好让运行时决定使用哪一行终止符来处理
Get_行
,但我假设这是一个家庭作业,需要找到行的结尾?

Get_行
已经去掉了行分隔符(在windows平台上是CRLF,或者在linux或其他*nix平台上是LF),因此您的方法不起作用。请尝试逐个字符读取

另外,
ASCII
软件包已被弃用。最好使用
Ada.Characters.Latin\u 1


(当然,最好让运行时决定使用哪一行终止符来处理
Get_line
,然后再处理该行,但我假设这是一个家庭作业,需要查找行尾?

这不是一个真正的文本文件;不是混合使用行分隔符


最好使用
Ada.Streams.Stream\u IO
()并使用
Character'Read
,直到出现
End\u错误
异常。

这不是一个真正的文本文件;不是混合使用行分隔符


使用
Ada.Streams.Stream\u IO
()使用
Character'Read
直到你得到一个
End\u错误
异常。

谢谢你提供的信息。不,不是家庭作业,而是我被卡住的一个政府项目是Ada83。这是一个1980年投入使用的系统。谢谢你提供的信息。不,不是家庭作业,而是我被卡住的一个政府项目是Ada83。它是这是一个在1980年投入使用的系统,是我迄今为止所发现的东西的副本。