Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пр.р.№3.Спец по Прог.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
119.67 Кб
Скачать

4. Створення бібліотек, що приєднуються динамічно (dll).

Використання DLL (динамічно підключена бібліотека) широко поширене в програмуванні Windows. DLL насправді частина коду виконуваного файлу з розширенням DLL. Будь-яка програма може викликати DLL.

Перевага DLL полягає в наступному:

  • Повторне використання коду.

  • Спільне використання коду додатками.

  • Поділ коду.

  • Поліпшення споживання ресурсів в Windows.

Приклад. Створимо свою бібліотеку, що включатиме функцію для пошуку суми двох чисел.

  1. У меню File виберіть пункт New -> Other. У діалоговому вікні на вкладці New виберіть DLL Wizard. Автоматично буде створений модуль - порожній шаблон майбутньої DLL.

  2. Додайте до файлу функцію, що знаходитиме сумму двох чисел. Текст бібліотеки:

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.

  1. Побудуйте DLL, оберіть Project -> Build Ім’я_проекту.

  2. Створіть новий додаток в якому передбачте необхідні компоненти для перевірки роботи функції знаходження суми двох чисел.

  3. До створеного проекту в секцію implementation додайте запис

function Summa(a,b: integer): integer; register; external 'MyDLL.dll';

Не забудьте скопіювати dll файл в каталог проекту.

Функції та процедури можуть бути локальними і експортуються з DLL.

Локальні функції та процедури можуть бути використані всередині DLL. Вони видно тільки всередині бібліотеки і жодна програма не може їх викликати ззовні.

Експортовані функції та процедури можуть бути використані за межами DLL. Інші програми можуть викликати такі функції і процедури.

Вихідний код вище використовує експортовану функцію. Ім'я функції слід за зарезервованим словом Exports.

У Delphi є два види завантаження DLL:

  • статична завантаження - при запуску додатка завантажується автоматично. Вона залишається в пам'яті на протязі виконання програми. Дуже просто використовувати. Просто додайте слово external після оголошення функції або процедури.

  • динамічне завантаження DLL завантажується в пам'ять в міру необхідності. Її реалізація більш складна, тому що Ви самі повинні завантажувати і вивантажувати її з пам'яті. Пам'ять використовується більш економно, тому додаток працює швидше. Програміст сам повинен стежити, щоб усе працювало правильно. Для цього потрібно:

  • Оголосити тип описуваної функції або процедури.

  • Завантажити бібліотеку в пам'ять.

  • Отримати адресу функції або процедури в пам'яті.

  • Викликати функцію або процедуру.

  • Вивантажити бібліотеку з пам'яті.

Завдання до практичної роботи

  1. Всі завдання, що необхідно створити в практичній роботі № 3 необхідно організувати у вигляді одного дадотку. Тобто необхідно створити головну форму, що включатиме в себе кнопки, що будуть запускати форми для демонстрації відповідного завдання.

  2. Створіть шаблон компонента, що описаний в пункті 1 та додайте в додаток форму, що демонструватиме роботу створеного шаблону.

  3. Створіть групу шаблонів компонентів на власний розсуд та додайте в додаток форму, що демонструватиме роботу групи шаблонів.

  4. Створіть новий компонент, що описаний в пункті 2.

  5. Створіть новий компонент на власний розсуд та додайте в додаток форму, що демонструватиме роботу нового компоненту.

  6. Додайте будь-яку форму до Депозитарію та спробуйте її використати для іншого додатку.

  7. Створіть dll бібліотеку, що описана в пункті 4.

  8. Створіть dll бібліотеку в яку входитиме не менш 3 функцій або процедур та підключатиметься для тестового додатку у відповідну форму динамічно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]