Создание динамически подключаемых библиотек (DLL)
Библиотеки DLL являются хранилищем различных компонентов (обычно процедур, функций и ресурсов). Вызов компонентов из библиотеки производится динамически при выполнении приложения по мере обращения к компонентам и не зависит от языка программирования. Это позволяет изменять компонент отдельно от приложения, не перетранслируя его, и использовать его в приложениях, написанных на других языках программирования (C++, Visual Basic).
Приведем пример создания библиотеки из двух функций Sum и Mult.
Выполним команду File/New/Dll. Сформируется заготовка, которую далее отредактируем, после строки {$R *.RES} вставим строки:
function Mult(x,y:double):double; begin Result:=x*y; end; // произведение x*y
function Sum(x,y:double):double; begin Result:=x+y; end; // сумма x+y
exports Sum, Mult; //список имен экспортируемых функций Sum, Mult
Сохраним проект под именем BSP и откомпилируем его (^F9), сформируется файл Bsp.Dll.
Внимание! Регистры букв в имени функции (в команде объявления функции в проекте) и в заголовке функции (в библиотеке) должны соответствовать.
В библиотеке можно хранить не только программы, но и ресурсы, например формы. Для примера создадим в проекте BSP форму (Form1) с надписью «Форма из BSP.DLL» и процедуру ShowFormDll (для создания и вывода формы Form1) вида:
procedure ShowFormDll(AOwner:TComponent); //заголовок процедуры
var F:TForm1; //переменная типа TForm1
begin F:=TForm1.Create(AOwner); //создание формы
F.ShowModal; {вывод формы} F.Free; {удаление формы} end;
Дополним строку exports:
exports Sum, Mult, ShowFormDll; //список имен экспортируемых функций
Откомпилируем проект (^F9) и получим новый вариант Bsp.DLL с дополненный формой и процедурой ее создания ShowFormDll.
Создайте новый проект для проверки Bsp.DLL (например, форма с двумя полями ввода чисел и кнопками (суммировать, перемножить, вывести форму) для проверки подпрограмм Sum, Mult, ShowFormDll).
В новом проекте объявите процедуры:
function Mult(x,y:double):double; //объявление функции Mult
external 'bsp.dll' //имя библиотеки DLL с функцией Mult
function Sum(x,y:double):double; //объявление функции Sum
external 'bsp.dll' //имя библиотеки DLL с функцией Sum
procedure ShowFormDll (AOwner:TComponent); //объявление процедуры
external 'bsp.dll' //имя библиотеки DLL с процедурой ShowFormDll.
Вывод формы можно реализовать командой ShowFormDll(Self).
Дата добавления: 2016-03-22; просмотров: 734;