Директива 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;