comp.lang.ada
 help / color / mirror / Atom feed
From: "Warren W. Gay VE3WWG" <ve3wwg@home.com>
Subject: Re: Another problem with stream reading.
Date: Tue, 26 Mar 2002 17:54:12 GMT
Date: 2002-03-26T17:54:12+00:00	[thread overview]
Message-ID: <3CA0B5C4.2060804@home.com> (raw)
In-Reply-To: mailman.1017082205.9199.comp.lang.ada@ada.eu.org

Just shooting from the hip here, I think the problem is that
you gave the compiler an impossible assignment. By that, I
mean that you've declared type Byte to have integer range
0..255 and at the same time said its size has to be 8 bits.
There is no room for that range and a sign bit (since it is
integer here) to exist in 8 bits (you need 9). As a result
of lying to HAL, HAL decided to disregard your statement
"for Byte'Size use 8" and used 16 instead.

If you want signed numbers, you need to fix the range. If
you want unsigned numbers, then you need a modulo type.


Erik Sigra wrote:

> Now I have the program
> 
> with Ada;                   use Ada;
> with Text_IO;               use Text_IO;
> with Ada.Streams;           use Streams;
> with Ada.Streams.Stream_IO; use Stream_IO;
> 
> procedure Streamtest is
>    The_File : Stream_IO.File_Type;
> begin
>    Open (The_File, In_File, "data");
>    declare
>       The_Stream : Stream_Access := Stream (The_File);
>       type Byte is range 0 .. 255;
>       for Byte'Size use 8;
>       B : Byte;
>    begin
>       while not End_Of_File (The_File) loop
>          Byte'Read (The_Stream, B);
>          Put_Line ("Read B = " & B'Img);
>       end loop;
>    end;
> end Streamtest;
> 
> 
> The data file contains
> "����" (hexadecimal "ff fe fd fc") (decimal "255 254 253 252). The output of 
> the program is:
> Read B =  255
> Read B =  253
> 
> 
> The problem is that it reads 2 bytes instead of 1 and thus skips each second 
> byte. Why?
> 


-- 
Warren W. Gay VE3WWG
http://home.cogeco.ca/~ve3wwg




  parent reply	other threads:[~2002-03-26 17:54 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-25 18:53 Another problem with stream reading Erik Sigra
2002-03-25 19:01 ` Dan Andreatta
2002-03-25 19:14   ` Erik Sigra
2002-03-25 22:20     ` Jeffrey Carter
2002-03-25 22:28     ` Stephen Leake
2002-03-26 17:54 ` Warren W. Gay VE3WWG [this message]
2002-03-27 15:53   ` Erik Sigra
2002-03-27 21:22     ` Warren W. Gay VE3WWG
2002-03-27 22:50     ` Dan Andreatta
2002-03-27 23:55     ` Randy Brukardt
2002-03-28  0:18       ` David Bolen
2002-03-28 22:30         ` Randy Brukardt
2002-03-28  0:33       ` tmoran
2002-03-28 15:21       ` Marin David Condic
2002-03-29 11:30         ` Larry Kilgallen
2002-03-29 14:33           ` Marin David Condic
replies disabled

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