comp.lang.ada
 help / color / mirror / Atom feed
From: "J-P. Rosen" <rosen@adalog.fr>
Subject: Re: Image attribute (yet again)
Date: Mon, 27 Apr 2020 14:33:29 +0200
Date: 2020-04-27T14:33:29+02:00	[thread overview]
Message-ID: <r86jep$93r$1@dont-email.me> (raw)
In-Reply-To: <670160da-e66d-446f-a415-27df39d9a73f@googlegroups.com>

Le 26/04/2020 à 19:33, Jere a écrit :
> I'm not saying it can't be done.  I'm saying by the time I go through
> all the processing needed, I might as well wrote my own function.  It
> makes the existing operation mostly useless (unless I just want a 
> temporary debug print that I don't care how it looks).  For example,
> if I want to print to a 16x2 character LCD screen and I want to print
> 0 padded 4 digit hex values with no "16#" prefix or "#" ending, then
> I need to call Put with an 8 character string, search for the first
> occurrence of '#' (it can be in multiple locations), then overwrite
> a variable number of those characters with 0's (based on the location
> of '#'), and then extract the 4 digits I actually need.  All doable 
> (not saying it cannot be done), but at that point, I am better off 
> just doing my own custom operation instead instead of even using the
> Put operation.  
Right. If you want you own format, write it. It will take you less time
than writing this message. For the benefit of everybody, here it is:

   Hex_Digits : constant array (Bits_16 range 0..15) of Character
      := "0123456789ABCDEF";
   function Hex_Image (Value : Bits_16) return String is
      Result  : String (1 .. 4);
      Current : Bits_16 := Value;
   begin
      for I in reverse Result'Range loop
         Result (I) := Hex_Digits (Current mod 16);
         Current    := Current / 16;
      end loop;
      return Result;
   end Hex_Image;

> It feels like the Put operation wasn't designed 
> with usability in mind.  Just the presence of the "16#" and "#" 
> around the value makes using the operation more clunky than it 
> should be.  If that had been left out or if the operation at least
> allowed for padding the actual numeric value inside the result,
> then it would have been much more usable.

Text_IO was designed for file operations, not so much for interactive
IO. And there is an important feature of Text_IO which is rarely
mentioned: If you use only the appropriate operations from Text_IO (no
'Image), and your program writes into a file, you can take the sequence
of code that writes the file, replace every Put_* operation by the
symetric Get_* operation, and you will read the file without error.

This feature requires that if you write a number in a certain base, then
you need to recognize the base when reading. So it's not an error, but a
design decision. Of course, like any design decision, you may agree with
it or not.
-- 
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr

  reply	other threads:[~2020-04-27 12:33 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-20 15:24 Image attribute (yet again) Stephen Davies
2020-04-25 22:35 ` Stephen Davies
2020-04-26  6:05   ` J-P. Rosen
2020-04-26 14:16     ` Jere
2020-04-26 17:09       ` Jeffrey R. Carter
2020-04-26 17:33         ` Jere
2020-04-27 12:33           ` J-P. Rosen [this message]
2020-04-27 12:50             ` Jere
2020-04-27 13:42               ` J-P. Rosen
2020-04-27 14:05                 ` Jere
2020-04-27 14:55                 ` Jeffrey R. Carter
2020-04-28  6:04                   ` J-P. Rosen
2020-04-27 14:10             ` Jere
2020-04-28  6:02               ` J-P. Rosen
2020-04-28 13:03                 ` Jere
2020-04-26 18:40       ` Oliver Kellogg
2020-04-26 18:42         ` Oliver Kellogg
2020-04-26 18:43           ` Oliver Kellogg
2020-04-27 12:52         ` Jere
2020-05-20  1:52       ` Shark8
2020-04-26 18:57     ` Stephen Davies
replies disabled

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