Шаг 117.
Модули импорта

    На этом шаге мы рассмотрим пример использования библиотеки DLL.

    Модули импорта создаются с целью улучшения структурирования программы и ее сопровождения после разработки. Такой модуль представляет собой заключенный в структуру модуля перечень импортируемых из DLL процедур и функций, а также описания всех типов и констант, необходимых для интерфейса с DLL. Модули импорта не обязательны для интерфейса с DLL, но они значительно упрощают разработку программ, использующих DLL.

    В качестве примера рассмотрим объединение в модуль UVector процедур, импортируемых из созданной на 112 шаге динамически подключаемой библиотеки, которая находится в файле с именем proba.dll.

unit UVector;

interface

function Vect_Max (Vect : array of Integer; N:Word): Integer;
function Vect_Min (Vect : array of Integer; N:Word): Integer;

implementation

function Vect_Max; external 'proba.dll' index 1;
function Vect_Min; external 'proba.dll' index 2;

end.
Для проверки работы этого модуля и библиотеки proba.dll может быть предложен, например, нижепоказанный модуль:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
    UVector;
const
    N = 20;
var
    Vect : array [1..N] of Integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  S : string;
  MaxEl : Integer;
begin
  MaxEl := Vect_Max (Vect, N) ;
  Str(MaxEl:7,S) ;
  Edit2.Text := S;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  S : string;
  MinEl : Integer;
begin
  MinEl := Vect_Min(Vect, N);
  Str(MinEl:7,S);
  Edit3.Text := S;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  S, El: string;
  i    : Integer;
begin
  Randomize;
  S := '';
  for i:=1 to N do
  begin
    Vect[i]:=Random(10);
    Str(Vect[i]:4, El);
    S := S + El;
  end;
  Edit1.Text := S;
end;

end.
Текст этого примера можно взять здесь.

    После запуска проекта на выполнение и нажатия на кнопки Мах и Min, форма проекта примет следующий вид:


Рис.1. Результат работы приложения


    Замечание. Для того, чтобы приложение "нашло" библиотеку DLL, можно разместить эту библиотеку в той же самой папке, где находится приложение (что и сделано в приведенном примере).

    На следующем шаге мы рассмотрим правила видимости переменных, находящихся в DLL.




Предыдущий шаг Содержание Следующий шаг