I'll try it, that looks to be what I want. I still want the SIZE property to return the actual lower quantity..
The idea is when I am shrinking the demand of the memory I don't to reallocate the real memory until later on so I can set a behavior flag to auto compact or manual compact etc..
Also the streaming part of it still needs to adhere to the originals of the Tmemoeystream where it does not play with the capacity unless it needs to be enlarged, otherwise if a stream is used at the beginning of the memory the size property should be set but the capacity should be higher or where ever it was before the stream operation.
In other words, if set for manual compact operation the streaming system should only increase capacity when needed but not decrease it when changing the SIZE property or calling SetSize method but only increase it incases where there isn't enough for the request.
I'll play with the code you gave here.