Name

Library Keyword

Syntax

library Name;
  Declarations...
Block.

Description

A library project defines a dynamically linked library (DLL). When Windows loads the library, Delphi first executes the initialization sections of all units. Then Delphi executes the library’s block.

Tips and Tricks

  • If your library passes strings, dynamic arrays, or Variants as arguments or return values between modules (the application or other libraries), you must use ShareMem as the first unit. See Chapter 2 for details.

  • If your library allocates memory (such as objects) freed by the application or another library, or if your library frees objects allocated by a different module, you must use the ShareMem unit.

  • If you pass object references as arguments or return values between modules, be aware that the is and as operators will not work correctly. Each module (program or library) keeps its own copy of every class’s RTTI. The is and as operators rely on RTTI to test class types, so different RTTI implies different types. If this is a problem, use packages instead of libraries. Chapter 3 explains RTTI in detail.

Example

library FontNames;

// Delphi lets you extend the IDE by loading packages or DLLs
// that use the Open Tools API. This rather trivial IDE extension
// must be compiled with the VCL50 runtime package. To install the
// extension, add a registry value under
// HKEY_CURRENT_USERSoftwareBorlandDelphi5.0Experts
// The entry name is a unique string, and the value is the path
// of this DLL.
//
// After compiling this DLL, creating the registry entry, and
// restarting Delphi, open the Object Inspector and choose
// the Font.Name property. Drop down the list of font names
// and watch what happens. If you have a lot of fonts installed,
// this will take a long time. Delete the registry entry and
// restart Delphi to remove the IDE extension.

uses ShareMem, DsgnIntf, ToolsAPI;

function Init(const BorlandIDEServices: IBorlandIDEServices;
  RegisterProc: TWizardRegisterProc;
  var Terminate: TWizardTerminateProc): Boolean; stdcall;
begin
  FontNamePropertyDisplayFontNames := True;
  Result := True;
end;

exports Init name WizardEntryPoint;

end.

See Also

Asm Keyword, Begin Keyword, DllProc Variable, Exports Keyword, External Directive, Package Directive, Program Keyword
..................Content has been hidden....................

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