Руководство по языку B.Pascal 7

       

Модули импорта


Описания импортируемых процедур и функций могут помещаться непосредственно в программу, которая их импортирует. Однако обыч- но они объединяются в модуль импорта, содержащий описания всех процедур и функций в DLL, а также все типы и константы, необходи- мые для интерфейса с DLL. Примерами таких модулей импорта являют- ся поставляемые с Borland Pascal модули WinTypes, WinProcs и WinAPI. Модули импорта не обязательны для интерфейса с DLL, но они значительно упрощают обслуживание использующих множество DLL проектов.

В качестве примера рассмотрим DLL с именем DATETIME.DLL, со- держащую четыре подпрограммы для получения и установки даты и времени с помощью типа записи, содержащей число, месяц, год и за- писи, которая содержит секунду, минуту и час. Вместо спецификации соответствующих описаний процедуры, функции и типа в каждой ис- пользующей DLL программе вы можете построить наряду с DLL модуль импорта. В следующем примере создается файл .TPW (в предположе- нии, что целевой платформой является Windows), но отсутствуют код и данные для использующей его программы.

unit DateTime;

interface

type TTimeRec = record Second: Integer; Minute: Integer; Hour: Integer; end;

type TDateRec TDateRec = record Day: Integer; Month: Integer; Year: Integer; end;

procedure SetTime(var Time: TTimeRec); procedure GetTime(var Time: TTimeRec); procedure SetDate(var Date: TDateRec); procedure GetDate(var Date: TDateRec);

inplementation

procedure SetTime; external 'DATETIME' index 1; procedure GetTime; external 'DATETIME' index 2; procedure SetDate; external 'DATETIME' index 3; procedure GetTime; external 'DATETIME' index 4;

end.

Любая программа, использующая DATETIME.DLL может теперь просто задать в своем операторе uses модуль DateTime. Приведем пример программы Windows:

program ShowTime;

uses WinCrt, DateTime;

var Time: TTimeRec;

begin GetTime(Time); with Time do WriteLn('Текущее время: ', Hour, ':', Minute, ':', Second); end.

Другим преимуществом использования модуля импорта, такого как DateTime, является то, что при модификации DATETIME.DLL обно- вить требуется только модуль импорта DateTime.

Когда вы компилируете использующую DLL программу, компилятор не ищет DLL, так что ее присутствие не требуется. Однако DLL должна присутствовать в системе при выполнении программы.

Если вы пишете собственные DLL, они не компилируются автома- тически при компиляции использующей ее программы с помощью коман- ды Compile¦Make. DLL следует компилировать отдельно.



Содержание раздела