D2010 TStream abstract error

Is there an undocumented change to the TStream mechanism in D2010?
For some reason, any operation on a TStream aside from free and create gives an abstract error.  any operations such as savetostream(theStream), copyfrom, copyto, readbuffer, read, writebuffer, write.. etc..
TMemoryStream,TFileStream and TStringStream work fine.

This problem is only in D2010 and even code which was working till D2009. even in the simplest form:
example:
var
  ms:TMemoryStream;
  sm:TStream;
begin
  ms:=TMemoryStream.create;
  sm:=TStream.create;
  //ms.load operation
  ms.position :=0;
  ms.savetostream(sm,sizeof(ms));    //fails  <<---- THIS SHOULD ALWAYS WORK!!
  //..OR sm.CopyFrom(ms,sizeof(ms));  //fails
  ms.free;
  sm.free;
end;
 
controlrAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

SteveBayCommented:
>>sm : TStream
TStream is a base class and should not be use directly. You should be using one of its descendants instead. My guess is that while this may have worked in the older version of the compiler Delphi finally decided to enforce what it has been saying in the help files for quite some time now.

From the help file:
TStream is an abstract or, in C++ terminology, pure virtual class. It should not be instantiated; it relies on abstract or pure virtual methods that must be overridden in descendant classes. Descendant stream objects, such as memory and file streams used for component streaming, are created automatically by the global functions ReadComponentRes and WriteComponentRes. For streaming other kinds of information, choose a descendant class according to the specific data and storage needs. These include
TFileStream (for working with files)
TStringStream (for manipulating in-memory strings)
TMemoryStream (for working with a memory buffer)
TBlobStream (for working with BLOB fields)  
TWinSocketStream (for reading and writing over a socket connection)  
TOleStream (for using a COM interface to read and write)  
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
controlrAuthor Commented:
it was so obvious.. as i had a problem on server side and thought it was a delphi error.  thanks.
0
Geert GOracle dbaCommented:
>>ms.savetostream(sm,sizeof(ms));    //fails  <<---- THIS SHOULD ALWAYS WORK!!
The lowest class which has this procedure is a TCustomMemoryStream in D2010
The TStream doesn't even have this procedure

it's even like that in D7

check the Classes unit
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.