... example is also wrong. ... works by accident and violates OOP design...
Reason: TThread is a blackbox....
1. OOP contrary to C++ and many other languages allows to do things before calling the inherited constructor. This is by design.
2. As already pointed out a class is initialized (boolean with false). This is by design x-platform.
3. FreeOnTerminate is not a blackbox. It is documented since ages.
4. When CreateSuspended is false, the thread is immediately created and might terminate before returning to the caller. So the FreeOnTerminate must be set before calling inherit or you have a potential memory leak.
You look silly... Not to put a too fine point on it...
What happens - in any OOP language - when the inherited constructor resets a field?
Just because your are used to it does not mean it is correct.
And a derived class *must* respect what its parent does. Black box....
Documenting out of order is ok, but in this case not. It is a basic element of the class structure...
I didn't even know experienced programmers like you would fall in that trap!. (Well... I actually knew)
Don't pollute this thread (sic) anymore... Let's ask Joost: he wrote the shitty part... And maybe reconsider...? Because I am right and you are wrong.