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.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to