[fpc-pascal] Class constructor called unconditionally

Michael Van Canneyt michael at freepascal.org
Thu Mar 31 17:06:55 CEST 2016



On Thu, 31 Mar 2016, silvioprog wrote:

> On Thu, Mar 31, 2016 at 11:28 AM, Michael Van Canneyt <
> michael at freepascal.org> wrote:
> [...]
>
>> I suspect the problem is not in the mode, but in detecting whether a class
>> is used
>> or not in a program. It becomes very complicated when you use e.g.
>> run-time packages.
>>
>
> Hm... so FPC class constructor (or class initialization) works like unit
> initialization.

I imagine so, yes.

It is one of the reasons why I don't really see the usefulness of this
construct, except that it looks OOP-ish.

I am guessing it comes from C++/Java/C#, which AFAIK do not have the 'initialization'
section. But that's just a guess.

>
>
>> Delphi itself is buggy in this regard, and has been since at least D7.
>> For this reason, in general I advise against extensive use of
>> initialization sections etc...
>
>
> Thanks for sharing this information.
>
> It's hard to make test-case when the code has an extensive use of
> initialization sections, so currently I'm avoiding it too. However, I need
> to register some classes in a class list, so I'm changing my code to do it
> in some place like application initialization.

I usually have a 'Start Application' kind of routine where I register all
the necessary things, link things together (needed if you follow 'loosely
coupled' design).

Michael.



More information about the fpc-pascal mailing list