Name

Finalization Keyword

Syntax

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

Description

The finalization section of a unit contains statements that run when the program exits or when Windows unloads a library. Finalization sections run in the opposite order of initialization.

Note that a unit must have an initialization section in order to have a finalization section. The initialization section can be empty.

Tips and Tricks

  • Use a finalization section to clean up global memory allocation and other global settings, such as changes to global variables.

  • Always free all memory and other resources used by the unit. The unit might be loaded into a package, and the package can be loaded and unloaded many times in a single application. Small memory or resource leaks can quickly grow to big problems if you aren’t careful.

Example

procedure ErrorHandler(ErrorCode: Integer; ErrorAddr: Pointer);
begin
  ... // Handle runtime errors.
end;

// Set a new error handler, but save the old one. Restore the previous
// error handler when this unit finalizes (which might be when
// the application unloads the package that contains this unit,
// and the application will continue to run using the old
// error handler).
var
  OldErrorProc: Pointer;
initialization
  OldErrorProc := ErrorProc;
  ErrorProc := @ErrorHandler;
finalization
  ErrorProc := OldErrorProc;
end.

See Also

Initialization Keyword, Unit Keyword
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset