comp.lang.ada
 help / color / mirror / Atom feed
From: NiGHTS <nights@unku.us>
Subject: Re: Assembling Complex Strings Containing Carriage Returns Prior to Using Ada.Text_IO.Put?
Date: Wed, 22 Oct 2014 10:16:45 -0700 (PDT)
Date: 2014-10-22T10:16:45-07:00	[thread overview]
Message-ID: <2a530b7a-cc6a-4a47-a7b4-51608d785508@googlegroups.com> (raw)
In-Reply-To: <a3632ab2-347a-4c42-847d-40b054ab2e2c@googlegroups.com>

On Wednesday, October 22, 2014 2:20:35 AM UTC-4, mockturtle wrote:
> On Wednesday, October 22, 2014 7:57:39 AM UTC+2, NiGHTS wrote:
> 
> > I am converting some code from C to Ada which involves building a complex string containing '\n' characters which would eventually be displayed on the standard output console using the printf() function. 
> 
> > 
> 
> > 
> 
> > 
> 
> > I tried to copy the same strategy of building the string in Ada like this:
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > Complex_String : Ada.Strings.Unbounded.Unbounded_String;
> 
> > 
> 
> > EOL            : String := ASCII.CR'Img;
> 
> > 
> 
> > 
> 
> > 
> 
> > ...
> 
> > 
> 
> > 
> 
> > 
> 
> > Ada.Strings.Unbounded.Append (Complex_String, 
> 
> > 
> 
> >     "Menu Title"                            & EOL & 
> 
> > 
> 
> >     "-------------------------------------" & EOL
> 
> > 
> 
> > );
> 
> > 
> 
> > 
> 
> > 
> 
> > ...
> 
> > 
> 
> > 
> 
> > 
> 
> > Ada.Text_Io.Put ( 
> 
> > 
> 
> > Ada.Strings.Unbounded.To_String( Complex_String ) );
> 
> > 
> 
> > Instead of breaking the line in the places where EOL has been inserted, it seems to show the letters "CR" in its place. 
> 
> > 
> 
> > The searches I performed on Google seem to be void of any hints on how to get this working. I can't imagine that I am the only one with this requirement in Ada.
> 
> > 
> 
> > Thanks in advance for your advice.
> 
> 
> 
> Do not use 'Img (that, by the way, I guess it is a GNAT extension).  Just do this
> 
> 
> 
>     EOL  : String := "" & ASCII.CR;
> 
> 
> 
> or this
> 
> 
> 
>     EOL : String(1..1) := (1 => ASCII.CR);
> 
> 
> 
> These funny syntaxes are necessary if you want EOL to be a string, since CR is a character. 
> 
> 
> 
> I think that in your case this would work too
> 
> 
> 
>     EOL : constant Character := ASCII.CR;

Thank you for your help. This is the version that eventually worked for me:

EOL : String(1..2) := (1 => Ada.Characters.Latin_1.CR, 2 => Ada.Characters.Latin_1.LF) ;


  parent reply	other threads:[~2014-10-22 17:16 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-22  5:57 Assembling Complex Strings Containing Carriage Returns Prior to Using Ada.Text_IO.Put? NiGHTS
2014-10-22  6:20 ` mockturtle
2014-10-22  6:28   ` Ludovic Brenta
2014-10-22  8:12     ` mockturtle
2014-10-22 14:36     ` Maciej Sobczak
2014-10-22 14:55       ` Dmitry A. Kazakov
2014-10-24  1:35         ` Keith Thompson
2014-10-22 16:01     ` Shark8
2014-10-22 16:50       ` Jeffrey Carter
2014-10-22 18:59         ` Simon Wright
2014-10-22 23:45           ` Dennis Lee Bieber
2014-10-23 11:38             ` G.B.
2014-10-23 16:22               ` Shark8
2014-10-22 17:32     ` Adam Beneschan
2014-10-22 17:55       ` NiGHTS
2014-10-22 17:16   ` NiGHTS [this message]
2014-10-22  6:25 ` Jeffrey Carter
2014-10-22 17:39   ` NiGHTS
2014-10-22 11:16 ` Björn Lundin
2014-10-22 17:44 ` Adam Beneschan
2014-10-22 17:47   ` Adam Beneschan
2014-10-22 18:01   ` NiGHTS
2014-10-22 22:34     ` Shark8
2014-10-22 23:32     ` Adam Beneschan
2014-10-24  2:45     ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox