На этом шаге мы рассмотрим пример использования библиотеки 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.
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.