Зберігання ресурсів в dll

У даній моєї статті, написаної, як і всі інші попередні, спеціально для gamedev.ru і мого скромного співтовариства 'grupa Antalisa', я розгляну спосіб зберігання ресурсів (зображень) в динамічно-підключаються бібліотеках (dll).

2 крок. Нам потрібно створити саму бібліотеку.
Для цього відкриваємо Дельфі. Закриваємо всі що в ній відкрито. Йдемо в меню File / New. Other. вибираємо DLL Wizard.
В отриманий модуль вставляємо інструкцію прілінковкі нашого ресурсного файлу: Виходить такий текст:

library Project2;
uses
SysUtils,
Classes;

Зберігаємо даний модуль в папку з нашим ресурсним файлом під назвою Stars1.dpr (проект створить свій файл ресурсів з такою ж назвою, тому назви проекту і нашого ресурсного файлу повинні відрізнятися.

Компілюємо проект (RUN ). Дельфі на нас лається, так як dll не виконується файл, але потрібну нам бібліотеку створює!

З головного модуля видаляємо рядок - у нас ресурси в dll!
Після implementation оголошуємо глобальну змінну DLLInstance: THandle; яка буде зберігати посилання на нашу dll

У процедурі створення форми намагаємося завантажити бібліотеку, якщо нам це не вдається - виходимо.

DLLInstance: = LoadLibrary ( 'Stars1.dll'); // завантаження бібліотеки
if DLLInstance = 0 then // Перевірка завантаження
begin MessageDlg ( 'Not found DLL!', mtError, [mbOK], 0); // Пишемо свою ругательсто ;-)
exit; // Якщо хочемо, прощаємося з користувачем, можна і більше різко: application.Terminate;
end;

У процедурі відтворення форми завантажуємо потрібне нам зображення з бібліотеки:
PNG.LoadFromResourceName (DLLInstance, 'Stars1');

Схожі статті