
- •Практична робота № 3.
- •Короткі теоретичні відомості
- •1. Створення та зберігання шаблонів компонентів та груп копонентів.
- •2. Створення нових компонентів та включення їх в бібліотеку.
- •3. Зберігання та використання проектів та форм з Депозитарію.
- •4. Створення бібліотек, що приєднуються динамічно (dll).
- •Завдання до практичної роботи
4. Створення бібліотек, що приєднуються динамічно (dll).
Використання DLL (динамічно підключена бібліотека) широко поширене в програмуванні Windows. DLL насправді частина коду виконуваного файлу з розширенням DLL. Будь-яка програма може викликати DLL.
Перевага DLL полягає в наступному:
Повторне використання коду.
Спільне використання коду додатками.
Поділ коду.
Поліпшення споживання ресурсів в Windows.
Приклад. Створимо свою бібліотеку, що включатиме функцію для пошуку суми двох чисел.
У меню File виберіть пункт New -> Other. У діалоговому вікні на вкладці New виберіть DLL Wizard. Автоматично буде створений модуль - порожній шаблон майбутньої DLL.
Додайте до файлу функцію, що знаходитиме сумму двох чисел. Текст бібліотеки:
library MyDLL;
uses
SysUtils,
Classes;
{$R *.res}
var
{ Оголошуємо змінні }
S: integer;
{ Оголошуємо функцію }
function Summa(a,b: integer): integer; register;
begin
S:=a+b;
result:= S;
end;
{ Експортуємо функцію для подальшого використання }
exports
Summa;
{ Ініціалізація змінних }
begin
S:=0;
end.
Побудуйте DLL, оберіть Project -> Build Ім’я_проекту.
Створіть новий додаток в якому передбачте необхідні компоненти для перевірки роботи функції знаходження суми двох чисел.
До створеного проекту в секцію implementation додайте запис
function Summa(a,b: integer): integer; register; external 'MyDLL.dll';
Не забудьте скопіювати dll файл в каталог проекту.
Функції та процедури можуть бути локальними і експортуються з DLL.
Локальні функції та процедури можуть бути використані всередині DLL. Вони видно тільки всередині бібліотеки і жодна програма не може їх викликати ззовні.
Експортовані функції та процедури можуть бути використані за межами DLL. Інші програми можуть викликати такі функції і процедури.
Вихідний код вище використовує експортовану функцію. Ім'я функції слід за зарезервованим словом Exports.
У Delphi є два види завантаження DLL:
статична завантаження - при запуску додатка завантажується автоматично. Вона залишається в пам'яті на протязі виконання програми. Дуже просто використовувати. Просто додайте слово external після оголошення функції або процедури.
динамічне завантаження DLL завантажується в пам'ять в міру необхідності. Її реалізація більш складна, тому що Ви самі повинні завантажувати і вивантажувати її з пам'яті. Пам'ять використовується більш економно, тому додаток працює швидше. Програміст сам повинен стежити, щоб усе працювало правильно. Для цього потрібно:
Оголосити тип описуваної функції або процедури.
Завантажити бібліотеку в пам'ять.
Отримати адресу функції або процедури в пам'яті.
Викликати функцію або процедуру.
Вивантажити бібліотеку з пам'яті.
Завдання до практичної роботи
Всі завдання, що необхідно створити в практичній роботі № 3 необхідно організувати у вигляді одного дадотку. Тобто необхідно створити головну форму, що включатиме в себе кнопки, що будуть запускати форми для демонстрації відповідного завдання.
Створіть шаблон компонента, що описаний в пункті 1 та додайте в додаток форму, що демонструватиме роботу створеного шаблону.
Створіть групу шаблонів компонентів на власний розсуд та додайте в додаток форму, що демонструватиме роботу групи шаблонів.
Створіть новий компонент, що описаний в пункті 2.
Створіть новий компонент на власний розсуд та додайте в додаток форму, що демонструватиме роботу нового компоненту.
Додайте будь-яку форму до Депозитарію та спробуйте її використати для іншого додатку.
Створіть dll бібліотеку, що описана в пункті 4.
Створіть dll бібліотеку в яку входитиме не менш 3 функцій або процедур та підключатиметься для тестового додатку у відповідну форму динамічно.