Initialization Keyword
unitName
; interfaceDeclarations
... implementationDeclarations
initializationStatements
... end.
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.
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 cannot
have a finalization
section.