If you design your classes you may get to a point where you want to have multiple overloaded constructors in your class. But all these overloaded constructors have parameters and a parameter-less constructor doesn’t make sense. And it should be forbidden to call it. Unfortunately Delphi doesn’t allow you to hide the inherited TObject.Create constructor and you end up with a class where you implement the parameter-less constructor just to throw an exception.
But why should you implement something that you obviously do not want anybody to call. Well, you do not need to. You can hide the inherited TObject.Create constructor. All you need is a small “helper” class between your base class and your derived class that does nothing more than moving the inherited constructor to be strict private. Why strict private and not private? Because strict private also prohibits calling it from the unit you’ve declare the “helper” class.
TNoParameterlessContructorObject = class(TObject) strict private constructor Create; end;