You could always use streams...

TMemoryStream

Then you'll immediately have the 'size' property and you'll still be able read and write in much the same manner.