help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Text_io package's Positive_Count type
Date: Wed, 11 Jan 2023 23:42:17 +0200	[thread overview]
Message-ID: <> (raw)
In-Reply-To: <>

On 2023-01-11 23:04, Mace Ayres wrote:
> -- -- physical file
> with gearbox; use  gearbox;
> with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
> with Term_IO;              use TERM_IO;
> with Text_IO;                use Text_IO;
> package combinations is
> ...
> col_is : Positive_Count ;  -- types from Text_IO
> row_is : Positive_Count ;
> procedure build;
> ...
> end combinations;
> -- *************************************
> -- combinations.adb -- physical file
> package body combination is
> ....
> procedure build is
> ..
> begin
> ...
> put(" Row is " );   put(row_is);
> put(" Column is "); put(col_is);
> ...
> end combinations;
> -- *****************************
> compiler error
> line_no : no candidate interpretations match the actual:
>       missing argument for parameter 'Item' in call to "put"
>      ...
>    possible missing instantiation of Text_IO.Integer_IO
>    expected type "Standard Integer"
>    found type Ada.Text_IO.count

Thanks for showing the code (although it seems you have changed it since 
you asked the question originally).

> ____
> This is different error than before and I easily see Put() is
> expecting Integer but has the.. count type; so I need some sort of
> translation to satisfy put(), maybe with and use Text_IO.Integer_IO
> as error message suggest?

Well, yes. But note that the message says you should _instantiate_ 
Text_IO.Integer_IO, not "with" it. This is because Text_IO.Integer_IO is 
not its own library unit, but a generic package nested within Text_IO, 
which you already "withed". So the message suggests that you should do 
this, somewhere in the declaration part of the body of package combination:

    package Count_IO is new Text_IO.Integer_IO (Num => Positive_Count);

and then you can call

    Count_IO.Put (row_is);

and so forth. Or, if you add "use Count_IO" after the instantiation, you 
can write just Put (row_is).

However, the simplest method for occasional or debugging output is to 
use the 'Image attribute to convert a number to text, as for example

    Put (row_is'Image);

or (for older Ada versions)

   Put (Positive_Count'Image (row_is));

where the "Put" is the Put in Text_IO for strings. With 'Image, you 
don't need Text_IO.Integer_IO (but you have less control over the form 
of the output).

  reply	other threads:[~2023-01-11 21:42 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-11 10:14 Text_io package's Positive_Count type Mace Ayres
2023-01-11 13:52 ` Niklas Holsti
2023-01-11 21:04   ` Mace Ayres
2023-01-11 21:42     ` Niklas Holsti [this message]
2023-01-11 21:46     ` Jeffrey R.Carter
replies disabled

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