Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_укр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

2. Створення dll бібліотеки в Delphi

Створення DLL починається з виконання команди File - New - Other і вибору у вікні New Items на сторінці New піктограми DLL Wisard.

 

 

 У результаті у вікні Редактора Коду ви побачите текст:

 library Projectl;

 {текст

 коментаря}

 uses

    список модулів;

 {SR *.res}

     реалізація підпрограм

 exports

    підпрограма1, підпрограма2, . . ., підпрограмаn;

end.

 Ця заготовка DLL дуже схожа на заготовку модуля. Основна відмінність - ключове слово library замість unit у першому рядку. Збережіть ваш проект у якусь відведену вами для цього теку, назвавши файл, що зберігається, тим же ім'ям, яке зазначено після ключового слова library. При комяіляції проекту із ключовим словом library створюється файл бібліотеки з розширенням.dll

 Кожна підпрограма оформляється звичайним способом, але в заголовку вказується додатковий параметр:

 function ім'я_функції (параметри):тип; stdcall;

procedure ім'я_процедури (параметри); stdcall;

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

 Розглянемо приклад створення демонстраційної DLL.

У бібліотеці створимо дві функції. Одна буде викликати діалог виходу із програми, а друга буде підсумовувати два довільні числа.

 library primer;

 uses

Windows, Messages, Sysutils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls;

 {$R *.res}

 //функція видачі діалогу на вихід із програми

function exit:boolean; stdcall;

begin

    if application.Messagebox('Вийти із програми?', 'Підтвердьте', mb_yesno+mb_iconquestion)=idyes then

        exit:=true

    else

        exit:=false;

end;

 //функція підсумовування двох чисел

function sum(a,b:real):real; stdcall;

begin

    sum:=a+b;

end;

 

exports

    exit, sum;

 

end.

 Після створення бібліотеки її компілюють за допомогою команди Project - Build.... Якщо помилок немає, те в теці із проектом буде створений файл .DLL

3. Внесення форм в dll

У розглянутому прикладі ми додали в DLL функції. Тепер подивимося, як можна ввести в DLL якісь форми. Це має сенс, якщо в серії ваших додатків використовуються деякі стандартизовані вами форми діалогів, наприклад, форма введення пароля. Недоцільно вводити таку форму в кожний додаток. Більш ощадливо помістити її в DLL і викликати із усіх додатків, у яких вона буде потрібно. До того ж, якщо із часом ви вирішили змінити цю форму, вам достатньо буде змінити тільки DLL, а всі додатки можуть залишатися незмінними.

Давайте введемо в нашу DLL просту форму діалогу, що запитує ім'я користувача. Виконайте команду File - New - Form, яка включить у вашу DLL нову форму. Перенесіть на форму компонент Label (Standard), вікно редагування Edit (Standard) і кнопку Button (Standard). Збережемо форму у файл під ім'ям frmlogin.

Збережіть модуль форми. У модулі форми для форми напишемо команду:

 close;

 У коді DLL потрібно підключити модуль створеної форми (після додавання форми в проект DLL її модуль буде підключений автоматично).

Також потрібно створити строкову функцію, яка запам'ятовує введений пароль.

 function parol:string; stdcall;

//описуємо змінну для роботи з формою

var form:tform1;

begin

    //створюємо екземпляр форми в пам'яті

    form:=tform1.create(nil);

    //відображаємо форму як модальну   

    form.showmodal;

    //функції привласнюємо введений пароль

    parol:=form.edit1.text;

    //видаляємо форму з пам'яті   

    form.free;

end;

 Після створення функції не забудьте  додати ім'я цієї функції в розділ exports.

Якщо всі дії виконані, то за допомогою команди Project-Build... перекомпілюйте текст бібліотеки у файл DLL.

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

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