<p>Am 30.09.2014 22:19 schrieb "Mark Morgan Lloyd" <<a href="mailto:markMLl.fpc-pascal@telemetry.co.uk">markMLl.fpc-pascal@telemetry.co.uk</a>>:<br>
><br>
> Sven Barth wrote:<br>
><br>
>> The only other alternative would be to add the RTL initialization code to each exported function. I don't consider this a viable alternative.<br>
><br>
><br>
> Which is more or less what Reinier's working code did. I'd hate that to be an implicit default.<br>
><br>
><br>
>> Note: Dynamic packages won't have this problem, because:<br>
>> - for packages linked at compile time the initialization is run as part of the program initialization AFTER the OS has initialized the library (which doesn't do much in case of a package)<br>
>> - for packages loaded at runtime it's done as part of the LoadPackage call<br>
>> That's however only possible, because dynamic packages are very different from simple libraries (and stuffed with compiler magic).<br>
><br>
><br>
> Is it possible for code in a unit to determine what sort of project it's part of, i.e. a standalone program, a library etc.? Could the RTL have a flag indicating that initialisation (or finalisation?) blocks were currently being run, and anything called should assume that facilities were restricted?</p>
<p>Isn't there a IsLibrary variable in System? For sure there is a IsPackage variable which will be true if the unit is part of a package (though I still need to find out how to implement this).<br>
You don't need a flag for initialization/finalization blocks, because if your code resides in one then you are obviously run inside one...</p>
<p>Regards,<br>
Sven</p>