[fpc-devel] zstream, fpc and lazarus

Paul Ishenin webpirat at mail.ru
Sun Dec 2 09:43:36 CET 2007

Daniël Mantione wrote:
> Op Sun, 2 Dec 2007, schreef Paul Ishenin:
>> Daniël Mantione ?????:
>>>  Ok, read with me. If we seek backwards (which is the case with offset 0
>>> from beginning), we call reset:
>>> if origin=sofrombeginning then
>>>  dec(offset,raw_read);
>>> if offset<0 then
>>> begin
>>> inc(offset,raw_read);
>>> reset;
>>> end;
>>> Inside reset, we set the source stream position to 0:
>> No, Daniel. When we just create TDecompressionStream we seeks to
>> soFromBeginning, 0. We have raw_read = 0, so offset = 0 too after dec(offset,
>> raw_read). And next condition with offset < 0 then is false 
>> =>  so no reset call.
>> I fixed that locally after your commit and lazarus works.
> This seems extremely strange to me. Are you telling that the source stream 
> is not at the start of the Zstream when you create the decompression stream?
Exactly. At least when I debugged pngreader it was at the end.
> By the way, I'm getting some doubts about position:=0. This basically 
This is according codegear help. We should folow it since many code 
depends on it.
> seeks the source file to its begin. But what happens if the Zstream does 
> not start at the beginning of the file?
My assumption is that zstream must be at the begining or one should use 
temporary memory stream to achieve that.

Best regards,
Paul Ishenin.

More information about the fpc-devel mailing list