<p>Am 13.04.2016 03:38 schrieb "Thorsten Engler" <<a href="mailto:thorsten.engler@gmx.net">thorsten.engler@gmx.net</a>>:<br>
><br>
> Sven Barth wrote:<br>
> > In that specific example you would be right, but units are seldomly used<br>
> in<br>
> > isolation and once both unit1 and unit2 are used in more units it isn't<br>
> that<br>
> > clear (to the user) anymore which unit is initialized first.<br>
><br>
> I've always found the rules about this very clear in Delphi (and I assumed<br>
> so far it applies to FPC as well):<br>
><br>
> If your unit depends on another unit being initialized before and finalized<br>
> after your unit, then that other unit must be listed in the interface uses<br>
> clause.<br>
><br>
> Units in the implementation uses clause may initialize before or after your<br>
> unit, and the order may change in the future depending on the contents of<br>
> other units in the project. But all units in the interface section are<br>
> guaranteed to have been initialized before your unit and are guaranteed to<br>
> finalize after your unit.<br>
><br>
> So if you depend on another unit being initialized first, list it in the<br>
> interface section. If you can't because of circular references, then your<br>
> code is broken and what you want to do is impossible.<br>
><br>
> Delphi ensures this is true, even when dynamically loaded packages come into<br>
> play, by essentially creating the following code for each unit behind the<br>
> scenes:</p>
<p>I had thought about something like this for dynamic packages as well. Seems like this would be useful for other things as well then.</p>
<p>Regards,<br>
Sven</p>