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: <k28opqFr7d5U1@mid.individual.net> (raw)
In-Reply-To: <fa48ad91-93de-41e2-a314-3ae2925f547cn@googlegroups.com>
On 2023-01-11 23:04, Mace Ayres wrote:
> -- combinations.ads -- 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).
next prev parent 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