Sådan tilføjes ressourcefiler i Delphi-eksekverbare filer

click fraud protection

Spil og andre typer applikationer, der bruger multimediefiler som lyde og animationer, skal enten distribuere de ekstra multimediefiler sammen med applikationen eller integrere filerne i eksekverbar.

I stedet for at distribuere separate filer til din applikations brug, kan du tilføje rå data til din applikation som en ressource. Du kan derefter hente dataene fra din applikation, når det er nødvendigt. Denne teknik er generelt mere ønskelig, fordi den kan forhindre andre i at manipulere disse tilføjelsesfiler.

Denne artikel viser dig hvordan man integrerer (og bruger) lydfiler, videoklip, animationer og mere generelt enhver form for binære filer i en Delphi-eksekverbar. Med det mest generelle formål ser du, hvordan man sætter en MP3-fil inde i Delphi exe.

Ressourcefiler (.RES)

I "Ressourcefiler lavet let"artikel blev du præsenteret for flere eksempler på brugen af ​​bitmaps, ikoner og markører fra ressourcer. Som nævnt i denne artikel kan vi bruge Image Editor til at oprette og redigere ressourcer, der består af sådanne filtyper. Når vi nu er interesseret i at gemme forskellige typer (binære) filer i en Delphi-eksekverbar, bliver vi nødt til at beskæftige os med ressource-scriptfiler (.rc),

instagram viewer
Borland Resource Compiler værktøj og andet.

Inkludering af flere binære filer i din eksekverbare består af 5 trin:

  1. Opret og / eller saml alle de filer, du vil lægge i en exe.
  2. Opret en ressource script-fil (.rc), der beskriver de ressourcer, der bruges af din applikation,
  3. Kompiler ressource script-filen (.rc) for at oprette en ressourcefil (.res),
  4. Link den kompilerede ressourcefil til programmets eksekverbare fil,
  5. Brug individuelt ressourceelement.

Det første trin skal være enkelt, vælg blot, hvilke typer filer du vil gemme i din eksekverbare. For eksempel lagrer vi to .wav-sange, en .ani-animation og en .mp3-sang.

Inden vi går videre, er her et par vigtige udsagn om begrænsninger, når man arbejder med ressourcer:

  • Indlæsning og losning af ressourcer er ikke en tidskrævende handling. Ressourcer er en del af applikationens eksekverbare fil og indlæses på samme tid, som applikationen kører.
  • Al (gratis) hukommelse kan bruges ved indlæsning / losning af ressourcer. Der er med andre ord ingen grænser for antallet af indlæste ressourcer på samme tid.
  • Naturligvis gør ressourcefiler dobbelt så stor som en eksekverbar. Hvis du vil have mindre eksekverbare computere, skal du overveje at placere ressourcer og dele af dit projekt i et dynamisk linkbibliotek (DLL) eller mere specialiseret variation.

Lad os nu se, hvordan man opretter en fil, der beskriver ressourcer.

Oprettelse af en ressource-scriptfil (.RC)

En ressource script-fil er bare en simpelt tekstfil med filtypenavnet .rc, der viser ressourcer. Skriptfilen er i dette format:

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

RexName specificerer enten et unikt navn eller en heltalværdi (ID), der identificerer ressourcen. ResType beskriver type ressource og ResFileName er den fulde sti og filnavn til den enkelte ressourcefil.

For at oprette en ny ressource script-fil skal du blot gøre følgende:

  1. Opret en ny tekstfil i dit projektmappe.
  2. Omdøb det til AboutDelphi.rc.

I følgende AboutDelphi.rc-fil skal du have følgende linjer:

Ur WAVE "c: \ mysounds \ projects \ clock.wav"
MailBeep WAVE "c: \ windows \ media \ newmail.wav"
Cool AVI cool.avi
Intro RCDATA introsong.mp3

Scriptfilen definerer simpelthen ressourcer. Efter det givne format viser scriptet AboutDelphi.rc to .wav-filer, en .avi-animation og en .mp3-sang. Alle udsagn i en .rc-fil knytter et identificerende navn, type og filnavn til en given ressource. Der er omkring et dusin foruddefinerede ressourcetyper. Disse inkluderer ikoner, bitmaps, markører, animationer, sange osv. RCDATA definerer generiske dataressourcer. RCDATA lader dig inkludere en rå dataressource til en applikation. Rå dataressourcer tillader inkludering af binære data direkte i den eksekverbare fil. F.eks. Navngiver RCDATA-sætningen ovenfor applikationens binære ressource Intro og specificerer filen introsong.mp3, som indeholder sangen til den MP3-fil.

Bemærk: Sørg for, at du har alle de ressourcer, du viser i din .rc-fil, tilgængelige. Hvis filerne er inde i dit projektmappe, behøver du ikke medtage det fulde filnavn. I min .rc-fil findes wav-sange * et sted * på disken, og både animationen og MP3-sangen findes i projektets bibliotek.

Oprettelse af en ressourcefil (.RES)

For at bruge de ressourcer, der er defineret i ressource script-filen, skal vi kompilere den til en .res-fil med Borlands Resource Compiler. Ressourcecompileren opretter en ny fil baseret på indholdet i ressource-scriptfilen. Denne fil har normalt en .res-udvidelse. Delphi-linkeren omformaterer senere .res-filen til en ressourceobjektfil og linker den derefter til den eksekverbare fil i et program.

Borland's Resource Compiler kommandolinjeværktøj er placeret i mappen Delphi Bin. Navnet er BRCC32.exe. Gå blot til kommandoprompten og skriv brcc32 og tryk derefter på Enter. Da biblioteket Delphi \ Bin er i din sti, aktiveres Brcc32-compileren og viser brugshjælpen (da den blev kaldt uden parametre).

Sådan kompileres filen AboutDelphi.rc til en .res-fil udfører denne kommando ved kommandoprompten (i projektbiblioteket):

BRCC32 AboutDelphi. RC

BRCC32 navngiver den kompilerede ressource (.RES) -fil med basisnavnet på .RC-filen som standard og placerer den i det samme bibliotek som .RC-filen.

Du kan navngive ressourcefilen alt, hvad du ønsker, så længe den har udvidelsen ".RES", og filnavnet uden udvidelsen er ikke det samme som en enhed eller et projektfilnavn. Dette er vigtigt, fordi hvert Delphi-projekt, der kompilerer til et program, som standard har en ressourcefil med samme navn som projektfilen, men med udvidelsen .RES. Det er bedst at gemme filen i det samme bibliotek som din projektfil.

Inkl. Ressourcer til eksekverbare filer (linking / integrering)

Når .RES-filen er knyttet til den eksekverbare fil, kan applikationen indlæse sine ressourcer på kørsel efter behov. For faktisk at bruge ressourcen skal du foretage et par Windows API-opkald.

For at følge artiklen har du brug for et nyt Delphi-projekt med et blank form (det standard nye projekt). Tilføj selvfølgelig {$ R AboutDelphi. RES} -direktiv til hovedformularenheden. Det er endelig tid til at se, hvordan man bruger ressourcer i en Delphi-applikation. Som nævnt ovenfor, for at bruge ressourcer, der er gemt i en exe-fil, er vi nødt til at håndtere API. Imidlertid kan flere metoder findes i Delphi hjælpefiler, der er "ressource" aktiveret.

Se for eksempel på LoadFromResourceName metode til et TBitmap-objekt. Denne metode uddrager den specificerede bitmap-ressource og tildeler det TBitmap-objekt. Dette er * nøjagtigt *, hvad LoadBitmap API-opkald gør. Som altid har Delphi forbedret et API-funktionskald, der passer bedre til dine behov.

Tilføj nu TMediaPlayer-komponenten til en form (navn: MediaPlayer1) og tilføj en TButton (knap2). Lad OnClick-begivenheden se ud:

Et mindre * problem * er, at applikationen opretter en MP3-sang på en brugermaskine. Du kan tilføje en kode, der sletter denne fil, inden applikationen afsluttes.

Udtræk *???

Naturligvis kan enhver anden type af en binær fil gemmes som en RCDATA-type. TRsourceStream er designet specielt til at hjælpe os med at udpakke en sådan fil fra en eksekverbar. Mulighederne er uendelige: HTML i en exe, EXE i exe, tom database i en exe osv. Og så videre.

instagram story viewer