Jak dodawać pliki zasobów w plikach wykonywalnych Delphi

click fraud protection

Gry i inne rodzaje aplikacji, które wykorzystują pliki multimedialne, takie jak dźwięki i animacje, również muszą rozpowszechniać dodatkowe pliki multimedialne wraz z aplikacją lub osadzać pliki w wykonywalny.

Zamiast dystrybuować osobne pliki do użytku aplikacji, możesz dodać surowe dane do aplikacji jako zasób. Następnie możesz pobrać dane z aplikacji, gdy są potrzebne. Ta technika jest na ogół bardziej pożądana, ponieważ może uniemożliwić innym manipulowanie plikami dodatków.

Ten artykuł pokaże ci jak osadzać (i używać) pliki dźwiękowe, klipy wideo, animacje i ogólnie wszelkiego rodzaju pliki binarne w pliku wykonywalnym Delphi. W najbardziej ogólnym celu zobaczysz, jak umieścić Plik MP3 wewnątrz Delfy exe.

Pliki zasobów (.RES)

W "Łatwe pliki zasobów"artykuł, na którym przedstawiono kilka przykładów użycia map bitowych, ikon i kursory z zasobów. Jak stwierdzono w tym artykule, możemy używać Edytora obrazów do tworzenia i edytowania zasobów, które składają się z tego rodzaju plików. Teraz, gdy będziemy zainteresowani przechowywaniem różnych typów (binarnych) plików w pliku wykonywalnym Delphi, będziemy musieli poradzić sobie z plikami skryptów zasobów (.rc),

instagram viewer
Kompilator zasobów Borland narzędzie i inne.

Dołączenie kilku plików binarnych do pliku wykonywalnego składa się z 5 kroków:

  1. Utwórz i / lub zbierz wszystkie pliki, które chcesz umieścić w pliku exe.
  2. Utwórz plik skryptu zasobów (.rc), który opisuje zasoby używane przez aplikację,
  3. Skompiluj plik skryptu zasobów (.rc), aby utworzyć plik zasobów (.res),
  4. Połącz skompilowany plik zasobów z plikiem wykonywalnym aplikacji,
  5. Użyj indywidualnego elementu zasobu.

Pierwszy krok powinien być prosty, po prostu zdecyduj, jakie typy plików chcesz przechowywać w pliku wykonywalnym. Na przykład przechowamy dwie piosenki .wav, jedną animację .ani i jedną piosenkę .mp3.

Zanim przejdziemy dalej, oto kilka ważnych stwierdzeń dotyczących ograniczeń podczas pracy z zasobami:

  • Ładowanie i rozładowywanie zasobów nie jest czasochłonną operacją. Zasoby są częścią pliku wykonywalnego aplikacji i są ładowane podczas uruchamiania aplikacji.
  • Cała (wolna) pamięć może być używana podczas ładowania / rozładowywania zasobów. Innymi słowy, nie ma ograniczeń co do liczby ładowanych zasobów jednocześnie.
  • Oczywiście pliki zasobów mają dwukrotnie większy rozmiar niż plik wykonywalny. Jeśli chcesz mniejszych plików wykonywalnych, rozważ umieszczenie zasobów i części projektu w pliku biblioteka linków dynamicznych (DLL) lub jego więcej specjalistyczna odmiana.

Zobaczmy teraz, jak utworzyć plik opisujący zasoby.

Tworzenie pliku skryptu zasobów (.RC)

Plik skryptu zasobów to prosty plik tekstowy z rozszerzeniem .rc, który zawiera listę zasobów. Plik skryptu ma następujący format:

ResName1 ResTYPE1 ResFileName1
ResName2 ResTYPE2 ResFileName2
...
ResNameX ResTYPEX ResFileNameX
...

RexName określa unikalną nazwę lub wartość całkowitą (ID), która identyfikuje zasób. ResType opisuje typ zasobu i ResFileName to pełna ścieżka i nazwa pliku do pojedynczego pliku zasobów.

Aby utworzyć nowy plik skryptu zasobów, wykonaj następujące czynności:

  1. Utwórz nowy plik tekstowy w katalogu projektów.
  2. Zmień nazwę na AboutDelphi.rc.

W pliku AboutDelphi.rc wpisz następujące wiersze:

Zegar WAVE „c: \ mysounds \ projects \ clock.wav”
MailBeep WAVE „c: \ windows \ media \ newmail.wav”
Cool AVI cool.avi
Wprowadzenie do RCDATA introsong.mp3

Plik skryptu po prostu definiuje zasoby. Zgodnie z podanym formatem skrypt AboutDelphi.rc wyświetla dwa pliki .wav, jedną animację .avi i jedną piosenkę .mp3. Wszystkie instrukcje w pliku .rc kojarzą nazwę identyfikującą, typ i nazwę pliku dla danego zasobu. Istnieje około tuzina predefiniowanych typów zasobów. Należą do nich ikony, mapy bitowe, kursory, animacje, piosenki itp. RCDATA definiuje ogólne zasoby danych. RCDATA pozwala dołączyć surowe źródło danych dla aplikacji. Surowe zasoby danych pozwalają na włączenie danych binarnych bezpośrednio do pliku wykonywalnego. Na przykład powyższa instrukcja RCDATA określa nazwę zasobu binarnego aplikacji Intro i określa plik introsong.mp3, który zawiera utwór dla tego pliku MP3.

Uwaga: upewnij się, że masz wszystkie zasoby wymienione w pliku .rc. Jeśli pliki znajdują się w katalogu projektów, nie musisz podawać pełnej nazwy pliku. W moim pliku .rc utwory .wav znajdują się * gdzieś * na dysku, a zarówno animacja, jak i utwór MP3 znajdują się w katalogu projektu.

Tworzenie pliku zasobów (.RES)

Aby użyć zasobów zdefiniowanych w pliku skryptu zasobów, musimy go skompilować do pliku .res za pomocą kompilatora zasobów Borlanda. Kompilator zasobów tworzy nowy plik na podstawie zawartości pliku skryptu zasobów. Ten plik zwykle ma rozszerzenie .res. Linker Delphi sformatuje później plik .res w plik obiektu zasobów, a następnie połączy go z plikiem wykonywalnym aplikacji.

Narzędzie wiersza polecenia kompilatora zasobów Borland znajduje się w katalogu Delphi Bin. Nazwa to BRCC32.exe. Po prostu przejdź do wiersza polecenia i wpisz brcc32, a następnie naciśnij klawisz Enter. Ponieważ katalog Delphi \ Bin znajduje się w ścieżce, wywoływany jest kompilator Brcc32, który wyświetla pomoc dotyczącą użytkowania (ponieważ został wywołany bez parametrów).

Aby skompilować plik AboutDelphi.rc do pliku .res, wykonaj to polecenie w wierszu polecenia (w katalogu projektów):

BRCC32 AboutDelphi. RC

Domyślnie, podczas kompilowania zasobów, BRCC32 nazywa skompilowany plik zasobów (.RES) podstawową nazwą pliku .RC i umieszcza go w tym samym katalogu, co plik .RC.

Możesz nazwać plik zasobów, jak chcesz, pod warunkiem, że ma rozszerzenie „.RES”, a nazwa pliku bez rozszerzenia nie jest taka sama jak nazwa pliku jednostki lub projektu. Jest to ważne, ponieważ domyślnie każdy projekt Delphi, który kompiluje się w aplikację, ma plik zasobów o tej samej nazwie co plik projektu, ale z rozszerzeniem .RES. Najlepiej jest zapisać plik w tym samym katalogu, co plik projektu.

W tym (Łączenie / Osadzanie) zasobów do plików wykonywalnych

Po połączeniu pliku .RES z plikiem wykonywalnym aplikacja może w razie potrzeby załadować swoje zasoby w czasie wykonywania. Aby faktycznie skorzystać z tego zasobu, musisz wykonać kilka wywołań interfejsu API systemu Windows.

Aby postępować zgodnie z tym artykułem, potrzebujesz nowego projektu Delphi z pusty formularz (domyślny nowy projekt). Oczywiście dodaj {$ R AboutDelphi. RES} do głównej jednostki formularza. Nadszedł czas, aby zobaczyć, jak korzystać z zasobów w aplikacji Delphi. Jak wspomniano powyżej, aby korzystać z zasobów przechowywanych w pliku exe, musimy poradzić sobie z API. Jednak w plikach pomocy Delphi, które mają włączoną funkcję „zasobów”, można znaleźć kilka metod.

Na przykład spójrz na LoadFromResourceName metoda obiektu TBitmap. Ta metoda wyodrębnia określony zasób bitmapy i przypisuje mu obiekt TBitmap. To jest * dokładnie * to, co robi wywołanie LoadBitmap API. Jak zawsze Delphi poprawiło wywołanie funkcji API, aby lepiej odpowiadało Twoim potrzebom.

Teraz dodaj składnik TMediaPlayer do formularza (nazwa: MediaPlayer1) i dodaj przycisk TButton (Button2). Niech wydarzenie OnClick będzie wyglądać następująco:

Jednym drobnym * problemem * jest to, że aplikacja tworzy utwór MP3 na komputerze użytkownika. Możesz dodać kod, który usuwa ten plik przed zakończeniem aplikacji.

Wyodrębnianie *???

Oczywiście każdy inny typ pliku binarnego może być przechowywany jako typ RCDATA. TRsourceStream został zaprojektowany specjalnie, aby pomóc nam wyodrębnić taki plik z pliku wykonywalnego. Możliwości są nieograniczone: HTML w exe, EXE w exe, pusta baza danych w exe i tak dalej.

instagram story viewer