Игры и другие типы приложений, которые используют мультимедийные файлы, такие как звуки и анимация, должны распространять дополнительные мультимедийные файлы вместе с приложением или вставлять файлы в исполняемый файл.
Вместо того, чтобы распространять отдельные файлы для использования в вашем приложении, вы можете добавить необработанные данные в свое приложение в качестве ресурса. Затем вы можете получить данные из вашего приложения, когда это необходимо. Этот метод, как правило, более желателен, поскольку он может помешать другим манипулировать этими файлами надстроек.
Эта статья покажет вам как встраивать (и использовать) звуковые файлы, видеоклипы, анимацию и, в более общем смысле, любые двоичные файлы в исполняемый файл Delphi. Для наиболее общего назначения вы увидите, как поставить Файл MP3 внутри Delphi исполняемый файл.
Файлы ресурсов (.RES)
В "Файлы ресурсов Made Easy«В статье вам были представлены несколько примеров использования растровых изображений, значков и курсоры из ресурсов. Как указано в этой статье, мы можем использовать редактор изображений для создания и редактирования ресурсов, состоящих из файлов такого типа. Теперь, когда мы заинтересованы в хранении различных типов (двоичных) файлов внутри исполняемого файла Delphi, нам придется иметь дело с файлами сценариев ресурсов (.rc),
Borland Resource Compiler инструмент и прочее.Включение нескольких двоичных файлов в ваш исполняемый файл состоит из 5 шагов:
- Создайте и / или соберите все файлы, которые вы хотите поместить в исполняемый файл.
- Создайте файл сценария ресурса (.rc), который описывает ресурсы, используемые вашим приложением.
- Скомпилируйте файл файла сценария ресурса (.rc), чтобы создать файл ресурса (.res),
- Свяжите скомпилированный файл ресурсов с исполняемым файлом приложения,
- Используйте отдельный элемент ресурса.
Первый шаг должен быть простым, просто решить, какие типы файлов вы хотели бы сохранить в вашем исполняемом файле. Например, мы будем хранить две песни .wav, одну анимацию .ani и одну песню .mp3.
Прежде чем мы продолжим, вот несколько важных утверждений, касающихся ограничений при работе с ресурсами:
- Загрузка и выгрузка ресурсов не является трудоемкой операцией. Ресурсы являются частью исполняемого файла приложения и загружаются одновременно с запуском приложения.
- Вся (свободная) память может быть использована при загрузке / выгрузке ресурсов. Другими словами, нет ограничений на количество загружаемых ресурсов одновременно.
- Конечно, файлы ресурсов удваивают размер исполняемого файла. Если вы хотите меньшие исполняемые файлы, рассмотрите возможность размещения ресурсов и частей вашего проекта в библиотека динамических ссылок (DLL) или больше специализированная вариация.
Давайте теперь посмотрим, как создать файл, описывающий ресурсы.
Создание файла сценария ресурса (.RC)
Файл сценария ресурса - это простой текстовый файл с расширением .rc, в котором перечислены ресурсы. Файл сценария имеет следующий формат:
ResName1 ResTYPE1 ResFileName1
ResName2 ResTYPE2 ResFileName2
...
ResNameX ResTYPEX ResFileNameX
...
RexName указывает либо уникальное имя, либо целочисленное значение (ID), которое идентифицирует ресурс. ResType описывает тип ресурса и ResFileName полный путь и имя файла к отдельному файлу ресурса.
Чтобы создать новый файл сценария ресурса, просто сделайте следующее:
- Создайте новый текстовый файл в каталоге ваших проектов.
- Переименуйте его в AboutDelphi.rc.
В файле AboutDelphi.rc есть следующие строки:
Часы WAVE "c: \ mysounds \ projects \ clock.wav"
MailBeep WAVE "c: \ windows \ media \ newmail.wav"
Классный AVI cool.avi
Интродукция 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 Resource Compiler находится в каталоге Delphi Bin. Называется BRCC32.exe. Просто перейдите в командную строку и введите brcc32, затем нажмите Enter. Поскольку каталог Delphi \ Bin находится в вашем пути, вызывается компилятор Brcc32, который отображает справку по использованию (поскольку он вызывался без параметров).
Чтобы скомпилировать файл AboutDelphi.rc в файл .res, выполните эту команду в командной строке (в каталоге проектов):
BRCC32 О Дельфи. RC
По умолчанию при компиляции ресурсов BRCC32 присваивает файлу скомпилированного ресурса (.RES) базовое имя файла .RC и помещает его в тот же каталог, что и файл .RC.
Вы можете назвать файл ресурса как угодно, если он имеет расширение «.RES», а имя файла без расширения не совпадает с именем файла какого-либо модуля или проекта. Это важно, потому что по умолчанию каждый проект Delphi, который компилируется в приложение, имеет файл ресурсов с тем же именем, что и файл проекта, но с расширением .RES. Лучше всего сохранить файл в том же каталоге, что и файл вашего проекта.
Включение (связывание / встраивание) ресурсов в исполняемые файлы
После того, как файл .RES связан с исполняемым файлом, приложение может загружать свои ресурсы во время выполнения по мере необходимости. Чтобы реально использовать ресурс, вам нужно сделать несколько вызовов Windows API.
Чтобы следовать статье, вам понадобится новый проект Delphi с бланк (новый проект по умолчанию). Конечно, добавьте {$ R AboutDelphi. RES} директива на основной блок формы. Наконец пришло время посмотреть, как использовать ресурсы в приложении Delphi. Как уже упоминалось выше, чтобы использовать ресурсы, хранящиеся в исполняемом файле, мы должны иметь дело с API. Однако в файлах справки Delphi можно найти несколько методов, для которых включен «ресурс».
Например, взгляните на LoadFromResourceName метод объекта TBitmap. Этот метод извлекает указанный ресурс точечного рисунка и назначает ему объект TBitmap. Это именно то, что делает вызов API LoadBitmap. Как всегда, Delphi улучшил вызов функции API, чтобы лучше удовлетворить ваши потребности.
Теперь добавьте компонент TMediaPlayer в форму (имя: MediaPlayer1) и добавьте TButton (Button2). Пусть событие OnClick выглядит так:
Одна небольшая * проблема * заключается в том, что приложение создает песню MP3 на компьютере пользователя. Вы можете добавить код, который удаляет этот файл до завершения приложения.
Извлечение *???
Конечно, любой другой тип двоичного файла может храниться как тип RCDATA. TRsourceStream разработан специально, чтобы помочь нам извлечь такой файл из исполняемого файла. Возможности бесконечны: HTML в exe, EXE в exe, пустая база данных в exe и так далее и тому подобное.