Как встраивать файлы мультимедиа в исполняемый файл Delphi (RC / .RES)

Игры и другие типы приложений, в которых используются мультимедийные файлы, такие как звуки и анимация, должны либо распространять дополнительные мультимедийные файлы вместе с приложением, либо встраивать файлы в исполняемый файл.

Вместо того, чтобы распространять отдельные файлы для использования в вашем приложении, вы можете добавить необработанные данные в свое приложение в качестве ресурса. Затем вы можете получить данные из своего приложения, когда это необходимо. Этот метод, как правило, более желателен, потому что он может удерживать других от манипуляций с этими файлами надстройки.

Эта статья покажет вам , как встраивать (и использовать) звуковые файлы, видеоклипы, анимацию и вообще любые двоичные файлы в исполняемом файле Delphi . Для наиболее общих целей вы увидите, как поместить файл MP3 в исполняемый файл Delphi.

Файлы ресурсов (.RES)

В статье “Resource Files Made Easy” вам было представлено несколько примеров использования растровых изображений, значков и курсоров из ресурсов. Как указано в этой статье, мы можем использовать редактор изображений для создания и редактирования ресурсов, состоящих из таких типов файлов. Теперь, когда мы заинтересованы в хранении различных типов (двоичных) файлов внутри исполняемого файла Delphi, нам придется иметь дело с файлами сценария ресурсов (.rc), инструментом Borland Resource Compiler и другими .

Включение нескольких двоичных файлов в исполняемый файл состоит из 5 шагов:

  1. Создайте и/или соберите все файлы, которые вы хотите поместить в exe.
  2. Создайте файл сценария ресурсов (.rc), который описывает ресурсы, используемые вашим приложением,
  3. Скомпилируйте файл сценария ресурсов (.rc), чтобы создать файл ресурсов (.res),
  4. Свяжите скомпилированный файл ресурсов с исполняемым файлом приложения,
  5. Используйте отдельный элемент ресурса.

Первый шаг должен быть простым: просто решите, какие типы файлов вы хотите хранить в вашем исполняемом файле. Например, мы будем хранить две песни .wav, одну анимацию .ani и одну песню .mp3.

Прежде чем мы продолжим, вот несколько важных утверждений. об ограничениях при работе с ресурсами:

  • Загрузка и выгрузка ресурсов – не трудоемкая операция. Ресурсы являются частью исполняемого файла приложения и загружаются одновременно с запуском приложения.
  • Вся (свободная) память может использоваться при загрузке/выгрузке ресурсов. Другими словами, нет никаких ограничений на количество одновременно загружаемых ресурсов.
  • Конечно, файлы ресурсов вдвое превышают размер исполняемого файла. Если вам нужны исполняемые файлы меньшего размера, рассмотрите возможность размещения ресурсов и частей вашего проекта в библиотеке динамической компоновки (DLL) или ее более специализированном варианте.

Давайте теперь посмотрим, как создать файл, описывающий ресурсы.

Создание файла сценария ресурсов (. RC)

Файл сценария ресурсов – это простой текстовый файл с расширением .rc, в котором перечислены ресурсы. Файл сценария имеет следующий формат:

ResName1 ResTYPE1 ResFileName1
ResName2 ResTYPE2 ResFileName2

ResNameX ResTYPEX ResFileNameX

RexName указывает либо уникальное имя, либо целочисленное значение (ID ), который идентифицирует ресурс. ResType описывает тип ресурса, а ResFileName – это полный путь и имя файла к отдельному файлу ресурса.

Чтобы создать новый файл сценария ресурсов, просто выполните следующие действия:

  1. Создайте новый текстовый файл в каталог ваших проектов.
  2. Переименуйте его в AboutDelphi.rc.

В файле AboutDelphi.rc укажите следующие строки:

Clock WAVE “c: mysounds projects clock.wav”
MailBeep WAVE “c: windows media newmail.wav “
Cool AVI cool.avi
Intro RCDATA introsong.mp3

Файл сценария просто определяет ресурсы. Следуя заданному формату, сценарий AboutDelphi.rc перечисляет два файла .wav, одну анимацию .avi и одну песню .mp3. Все операторы в файле .rc связывают идентифицирующее имя, тип и имя файла для данного ресурса. Существует около десятка предопределенных типов ресурсов. К ним относятся значки, растровые изображения, курсоры, анимация, песни и т. Д. RCDATA определяет общие ресурсы данных. RCDATA позволяет включать в приложение ресурс необработанных данных. Ресурсы необработанных данных позволяют включать двоичные данные непосредственно в исполняемый файл. Например, приведенная выше инструкция RCDATA называет двоичный ресурс приложения Intro и указывает файл introsong.mp3, который содержит песню для этого файла MP3.

Примечание. убедитесь, что у вас есть все ресурсы, перечисленные в вашем .rc-файле. Если файлы находятся в каталоге ваших проектов, вам не нужно указывать полное имя файла. В моем .rc-файле .wav-песни расположены * где-то * на диске, а анимация и MP3-песня находятся в каталоге проекта.

Создание файла Файл ресурсов (.RES)

Чтобы использовать ресурсы, определенные в файле сценария ресурсов, мы должны скомпилировать его в файл .res с помощью компилятора ресурсов Borland. Компилятор ресурсов создает новый файл на основе содержимого файла сценария ресурсов. Этот файл обычно имеет расширение .res. Компоновщик Delphi позже переформатирует файл .res в файл объекта ресурса, а затем свяжет его с исполняемым файлом приложения.

Команда компилятора ресурсов Borland Инструмент line находится в каталоге Delphi Bin. Имя – BRCC32.exe. Просто перейдите в командную строку и введите brcc32, затем нажмите Enter. Поскольку каталог Delphi Bin находится в вашем пути, компилятор Brcc32 вызывается и отображает справку по использованию (поскольку он был вызван без параметров).

Чтобы скомпилировать файл AboutDelphi.rc в файл .res, выполните эту команду в командной строке (в каталоге проектов):

BRCC32 AboutDelphi.RC

По умолчанию при компиляции ресурсов BRCC32 называет скомпилированный ресурс (.RES) файл с базовым именем файла .RC и помещает его в тот же каталог, что и файл .RC.

Вы можете назвать файл ресурсов как хотите , если он имеет расширение “.RES”, а имя файла без расширения не совпадает с именем любого модуля или файла проекта. Это важно, потому что по умолчанию каждый проект Delphi, который компилируется в приложение, имеет файл ресурсов с тем же именем, что и файл проекта, но с расширением .RES. Лучше всего сохранить файл в том же каталоге, что и файл вашего проекта.

Включение (связывание/встраивание) ресурсов в исполняемые файлы

После того, как файл .RES связан с исполняемым файлом, приложение может загружать свои ресурсы во время выполнения по мере необходимости. Чтобы действительно использовать ресурс, вам нужно будет сделать несколько вызовов Windows API.

Чтобы следовать статье, вам понадобится новый Delphi проект с пустой формой (новый проект по умолчанию). Конечно, добавьте директиву {$ R AboutDelphi.RES} в модуль основной формы. Наконец-то пора посмотреть, как использовать ресурсы в приложении Delphi. Как упоминалось выше, чтобы использовать ресурсы, хранящиеся в exe-файле, мы должны иметь дело с API. Однако в файлах справки Delphi можно найти несколько методов, которые имеют “ресурс”.

Например, взгляните на LoadFromResourceName объекта TBitmap. Этот метод извлекает указанный ресурс растрового изображения и назначает ему объект TBitmap. Это * в точности * то, что делает вызов API LoadBitmap. Как всегда, в Delphi улучшен вызов функции API, чтобы он лучше соответствовал вашим потребностям.

Теперь добавьте компонент TMediaPlayer в форму (имя: MediaPlayer1) и добавьте TButton (Кнопка2). Пусть событие OnClick выглядит так:

Одна небольшая * проблема * заключается в том, что приложение создает песню в формате MP3 на пользовательском компьютере. Вы можете добавить код, удаляющий этот файл до завершения работы приложения.

Извлечение *. ???

Конечно, любой другой тип двоичного файла может быть сохранен как тип RCDATA. TRsourceStream разработан специально, чтобы помочь нам извлечь такой файл из исполняемого файла. Возможности безграничны: HTML в exe, EXE в exe, пустая база данных в exe и так далее..

Оцените статью
recture.ru
Добавить комментарий