Really, IS NOT A BUG, but rather, a deliberate action to be observed by the programmer.
THERE IS NOTHING TO CHANGE IN THE DEFINITION OF THIS TYPE OF CLASS!
All base classes must/can, in fact, define procedures that must/can be overridden by sub-classes.
In this way, the 4 pillars of Object Oriented Programming will be respected. And he who neglects them will pay the price of little knowledge.
Why dont use "abstract CLASSes (or with abstract methods)" like TStrings directly?
-- Why many methods in this classes CAN "NOT BE" IMPLEMENTED, in fact!
Ex. for TStrings class, in "System.Classes.pas":
the error above happens when the procedure "CLEAR" is invoked, but this procedure is not implemented in real class (TStrings)... then, the "access violation" occurrs.
line 731: procedure Clear; virtual; abstract; ... line 7230, ... Clear; // <--- this cause the error because it is "Abstract" in this class.
... NOT .LOADFROMSTREAM(...)
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3