Іноді виникає необхідність помістити ресурси в виконуваний файл Вашого застосування (наприклад щоб запобігти їх випадковому видаленню користувачем, або, щоб захистити їх від змін). Даний приклад показує як помістити будь-який файл як ресурс в EXE.
Далі розглянемо, як створити файл ресурсів, що містить копію будь-якого файлу. Після створення такого файлу його можна легко причепити до Вашого проекту директиви. Файл ресурсів, який ми будемо створювати має такий вигляд:
- Заголовок
- заголовок для нашого RCDATA ресурсу
- власне дані - RCDATA ресурс
В даному прикладі буде показано, як зберегти в файлі ресурсів тільки один файл, але думаю, що так само легко Ви зможете зберегти і кілька файлів.
Тема ресурсу виглядає наступним чином:
Поля помічені зірочкою Ми не будемо використовувати.
Наведений код створює файл ресурсів і копіює його в дане зображення:
Даний код не зовсім гарний, і відсутня обробка помилок. Правильніше буде створити клас, що включає в себе даний приклад.
Витяг ресурсів з EXE
тепер розглянемо приклад, який показує, як витягувати ресурси з виконуваного модуля.
Вся процедура полягає в створенні потоку ресурсу, створення файлового потоку і копіюванні з потоку ресурсу в потік файлу.
Все, що потрібно, це отримати Instanceexe -шніка або dll (у Вашого застосування це Application.Instance або Application.Handle. Для dll Вам доведеться отримати його самостійно :)
ResID той же самий ID. який був присвоєний ресурсу ResType. WAVEFILE, BITMAP, CURSOR, CUSTOM це типи ресурсів, з якими можливо працювати
FileName це ім'я файлу, який ми хочемо створити з ресурсу