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

         

Статический и динамический импорт


Директива external обеспечивает возможность статического им- порта процедур и функций из DLL. Статически импортируемая проце- дура и функция всегда ссылается на одну и ту же точку входа в DLL. Расширения Windows и защищенного режима DOS Borland поддер- живает также динамический импорт, при котором имя DLL и имя или порядковый номер импортируемой процедуры или функции задается во время выполнения. Приведенная ниже программа ShowTime использует динамический импорт для вызова процедуры GetTime в DATETIME.DLL. Обратите внимание на использование переменной процедурного типа для представления адреса процедуры GetTime.

program ShowTime;

uses WinProcs, WinTypes, WinCrt;

type TTimeRec = record Second: Integer; Minute: Integer; Hour: Integer; end; TGetTime = procedure(var Time: TTimeRec);

var Time: TTimeRec; Handle: THAndle; GetTime: TGetTime;

begin Handle := LoadLibrary('DATETIME.DLL'); if Handle >= 32 then begin @GetTie := GetProcAddress(Handle, 'GETTIME'); if @GetTime <> nil then begin GetTime(Time); with Time do WriteLn('Текущее время: ', Hour, ':', Minute, ':', Second); end; FreeLibrary(Handle); end; end;



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