Как да добавите ресурсни файлове в изпълними файлове на Delphi

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

Вместо да разпространявате отделни файлове за използването на приложението си, можете да добавите суровите данни към приложението си като ресурс. След това можете да извлечете данните от приложението си, когато са необходими. Тази техника като цяло е по-желана, защото може да попречи на другите да манипулират тези добавъчни файлове.

Тази статия ще ви покаже как да вграждате (и използвате) звукови файлове, видео клипове, анимации и по-общо всякакъв вид двоични файлове в изпълним файл на Delphi. За най-общата цел ще видите как да поставите MP3 файл вътре в a Delphi Търсейки.

Ресурсни файлове (.RES)

В „Файлове с ресурси, направени лесно"статия, на която ви бяха представени няколко примера за използването на растерни карти, икони и курсори от ресурси. Както е посочено в тази статия, можем да използваме редактора на изображения за създаване и редактиране на ресурси, които се състоят от такива типове файлове. Сега, когато сме заинтересовани да съхраняваме различни видове (двоични) файлове в изпълнимия файл на Delphi, ще трябва да се справим с файлове със скрипт на ресурсите (.rc),

instagram viewer
Съставител на Borland Resource инструмент и други.

Включването на няколко двоични файла във вашия изпълним файл се състои от 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's Compiler Resource се намира в директорията Belphi Bin. Името е BRCC32.exe. Просто отидете на командния ред и напишете brcc32, след което натиснете Enter. Тъй като директория Delphi \ Bin е във вашия път, компилаторът Brcc32 се извиква и показва помощ за използване (тъй като е извикан без параметри).

За да компилирате файла AboutDelphi.rc към .res файл, изпълнете тази команда в командния ред (в директорията на проектите):

BRCC32 AboutDelphi. RC

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

Можете да наречете файла с ресурс всичко, което искате, стига да има разширението ".RES", а името на файла без разширението не е същото като всяко име на файл или проект. Това е важно, защото по подразбиране всеки проект на Delphi, който се компилира в приложение, има ресурсен файл със същото име като файла на проекта, но с разширението .RES. Най-добре е да запазите файла в същата директория като файла на вашия проект.

Включване (свързване / вграждане) на ресурси към изпълними файлове

След като .RES файлът бъде свързан с изпълнимия файл, приложението може да зареди ресурсите си по време на изпълнение според нуждите. За да използвате реално ресурса, ще трябва да направите няколко обаждания в API на Windows.

За да следвате статията, ще ви е необходим нов проект на Delphi с a празен формуляр (новият проект по подразбиране). Разбира се добавете {$ R AboutDelphi. RES} директива към единицата на основната форма. Най-накрая е време да видим как да използваме ресурси в приложение на Delphi. Както бе споменато по-горе, за да използваме ресурси, съхранявани във exe файл, трябва да се справим с API. Въпреки това, няколко метода могат да бъдат намерени в помощните файлове на Delphi, които са активирани "ресурс".

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

Сега добавете компонента TMediaPlayer към формуляр (име: MediaPlayer1) и добавете TButton (Button2). Нека събитието на OnClick изглежда така:

Един малък проблем * е, че приложението създава MP3 песен на потребителска машина. Можете да добавите код, който изтрива този файл, преди да бъде прекратено приложението.

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

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

instagram story viewer