[fpc-devel] TBufferedFileStream
Michael Van Canneyt
michael at freepascal.org
Sun Sep 4 14:04:53 CEST 2016
On Sun, 4 Sep 2016, José Mejuto wrote:
> El 04/09/2016 a las 7:15, Michael Van Canneyt escribió:
>
>>> In the other hand a cache system is powerful than a buffered system if
>>> you are writing something like a filesystem over a TFileStream where
>>> you may need to jump here and there to read data, file allocation
>>> tables, attributes, and so on, in this case a cache with multiple
>>> pages instead just one improves the result (avoid multiple reads in
>>> the same zones).
>>
>> And why did you not use the bufstream unit of FPC ?
>>
>> The TBufStream stream implemented there works with any other stream, not
>> just files.
>>
>
> Hello,
>
> In fact I wrote my code over TStream but in Delphi the class is inherited
> from TFileStream so I take my "TStreamFilter" and adapt it to inherit from
> TFileStream just as Delphi do.
>
> The second powerful reason is that I was not aware about TBufStream :)
It's even documented.
http://www.freepascal.org/docs-html/current/fcl/bufstream/index.html
> TBufStream does support seek ? And SetSize ?
Seek: yes. Setsize not.
The TBufStream class has 2 descendents: one for reading, one for writing.
This means the implementation is much more simple, and for most usecases,
this is sufficient.
>
> My code like TBufStream inherits from TStream. Which is the advantage of
> inherit from TOwnerStream ?
TOwnerStream is only useful if you have a second stream which you use as a
source. It will free it for you. This is useful when chaining streams.
I will add your implementation to the bufstream unit.
It offers more functionality, but works only on files.
It's - as usual - a tradeoff.
Michael.
More information about the fpc-devel
mailing list