Name

Initialization Keyword

Syntax

unit Name;
interface Declarations...
implementation Declarations
initialization Statements...
end.

Description

The statements in a unit’s initialization section run when Windows loads the module (application, DLL, or package) that contains the unit. Delphi first runs the initialization section for all the units the Name unit uses, in order of appearance, starting with the interface units, followed by the implementation units. A unit’s initialization section runs after Delphi runs the initialization section for all used units.

Delphi keeps track of which units have been initialized, so a unit’s initialization section never runs more than once.

Tips and Tricks

  • Delphi initializes units in a depth-first manner. If you need your unit to be initialized first, make sure it is listed first in the project’s .dpr file. Setting a new memory manager is a common example of a unit that must be initialized first.

  • The order of unit initialization means you cannot know for certain when your unit will be initialized, but all the units used in the interface section will be initialized first.

  • Units are finalized in reverse order of initialization.

  • Even if a unit does not declare an initialization section, Delphi automatically creates one. For a large project, starting an application or loading a DLL can result in a lot of page faults as Windows pages in the initialization code for every unit.

  • You can use the begin keyword instead of initialization, but if you do, the unit ...

Get Delphi in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.