comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Usage of Stream Set_Index() function
Date: Fri, 14 Jan 2022 22:35:49 +0200	[thread overview]
Message-ID: <j4e555F1iffU1@mid.individual.net> (raw)
In-Reply-To: <61e1c144$0$6478$426a74cc@news.free.fr>

On 2022-01-14 20:30, DrPi wrote:
> 
> Hi,
> 
> I'm writing an application where I read a file with a complex structure.
> For this, I use Ada.Streams.Stream_IO package.
> To read the file, I need to position the file pointer to the correct 
> location. I do this using Set_Index().
> 
> In ARM A.12.1, it is stated :
> For Read and Write with a Positive_Count parameter, the value of the 
> current index is set to the value of the Positive_Count parameter plus 
> the number of stream elements read or written.
> 
> I don't understand the "plus the number of stream elements read or 
> written".


For Write, the ARM also says: "The Write procedure with a Positive_Count 
parameter starts writing at the specified index". And then, after the 
data have been written, naturally the current index of the stream has 
been increased, to point at the position after the written data. That is 
the meaning of the "plus" phrase.

And Read analogously. The "plus" phrase explains what the value of the 
current index is _after_ the Read or Write. But both the Read and the 
Write _start_ reading/writing at the index given in the From/To parameters.


> Does this mean one can't go back to beginning of file once data have 
> been read ?


No, Set_Index can do that, whether the last action was writing or 
reading. And the Write/Read with an index parameter can also do that.

But if you have set the current index to the desired position with 
Set_Index, you don't need to use the Read/Write that have a 
Positive_Count (index) parameter.

This code:

    Set_Index (F, I);
    Write (F, Item);

is equivalent to:

    Write (F, Item, I);

and ditto Read.

  reply	other threads:[~2022-01-14 20:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-14 18:30 Usage of Stream Set_Index() function DrPi
2022-01-14 20:35 ` Niklas Holsti [this message]
2022-01-15 10:36   ` DrPi
replies disabled

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