Hur man lägger till resursfiler i Delphi-körbara filer

Spel och andra typer av applikationer som använder multimediafiler som ljud och animationer måste antingen distribuera de extra multimediafilerna tillsammans med applikationen eller bädda in filerna i körbar.

Istället för att distribuera separata filer för din applikations användning kan du lägga till rådata till din applikation som en resurs. Du kan sedan hämta data från din applikation när det behövs. Denna teknik är i allmänhet mer önskvärd eftersom den kan hindra andra från att manipulera dessa tilläggsfiler.

Den här artikeln visar dig hur man bäddar in (och använder) ljudfiler, videoklipp, animationer och mer generellt alla typer av binära filer i en Delphi-körbar. För det mest allmänna syftet ser du hur man sätter en MP3-fil inuti Delphi exe.

Resursfiler (.RES)

I "Resursfiler enkelt"artikeln fick du flera exempel på användning av bitmappar, ikoner och markörer från resurser. Som nämnts i den artikeln kan vi använda Image Editor för att skapa och redigera resurser som består av sådana filtyper. När vi nu är intresserade av att lagra olika typer av (binära) filer i en Delphi-körbar version måste vi ta itu med resursskriptfiler (.rc),

instagram viewer
Borland Resource Compiler verktyg och annat.

Att inkludera flera binära filer i din körbara består av fem steg:

  1. Skapa och / eller samla alla filer du vill lägga i ett exe.
  2. Skapa en resursskriptfil (.rc) som beskriver de resurser som används av din applikation,
  3. Kompilera resursskriptfilen (.rc) för att skapa en resursfil (.res),
  4. Länk den sammanställda resursfilen till programmets körbara fil,
  5. Använd enskilt resurselement.

Det första steget ska vara enkelt, helt enkelt bestämma vilka filtyper du vill lagra i din körbara. Till exempel lagrar vi två .wav-låtar, en .ani-animeringar och en .mp3-låt.

Innan vi går vidare är här några viktiga uttalanden om begränsningar när du arbetar med resurser:

  • Att ladda och lossa resurser är inte en tidskrävande åtgärd. Resurser är en del av programens körbara fil och laddas samtidigt som applikationen körs.
  • Allt (gratis) minne kan användas när resurser laddas / lossas. Med andra ord finns det inga begränsningar för antalet resurser som laddats samtidigt.
  • Naturligtvis gör resursfiler dubbelt så stor som en körbar. Om du vill ha mindre körbara program, överväg att placera resurser och delar av ditt projekt i ett dynamisk länkbibliotek (DLL) eller dess mer specialiserad variation.

Låt oss nu se hur du skapar en fil som beskriver resurser.

Skapa en resursskriptfil (.RC)

En resursskriptfil är bara en enkel textfil med förlängningen .rc som visar resurser. Skriptfilen är i detta format:

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

RexName anger antingen ett unikt namn eller ett heltalvärde (ID) som identifierar resursen. ResType beskriver typen av resurs och ResFileName är den fullständiga sökvägen och filnamnet till den enskilda resursfilen.

För att skapa en ny resursskriptfil, gör du så här:

  1. Skapa en ny textfil i din projektkatalog.
  2. Byt namn på det till AboutDelphi.rc.

I filen AboutDelphi.rc har du följande rader:

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

Skriptfilen definierar helt enkelt resurser. Efter det givna formatet listar AboutDelphi.rc-skriptet två .wav-filer, en .avi-animation och en .mp3-låt. Alla uttalanden i en .rc-fil associerar ett identifierande namn, typ och filnamn för en given resurs. Det finns ungefär ett dussin fördefinierade resurstyper. Dessa inkluderar ikoner, bitmappar, markörer, animationer, låtar etc. RCDATA definierar generiska dataressurser. Med RCDATA kan du inkludera en rådataressurs för en applikation. Rå dataressurser tillåter inkludering av binära data direkt i den körbara filen. Till exempel anger RCDATA-uttalandet ovan applikationens binära resurs Intro och anger filen introsong.mp3, som innehåller låten för den MP3-filen.

Obs: se till att du har alla resurser du listar i din .rc-fil tillgängliga. Om filerna finns i din projektkatalog behöver du inte inkludera det fulla filnamnet. I min .rc-fil finns wav-låtar * någonstans * på disken och både animationen och MP3-låten finns i projektets katalog.

Skapa en resursfil (.RES)

För att använda resurserna definierade i resursskriptfilen måste vi sammanställa den till en .res-fil med Borlands resurskompilator. Resurskompilatorn skapar en ny fil baserad på innehållet i resursskriptfilen. Denna fil har vanligtvis en .res-förlängning. Delphi-länken kommer senare att omformatera .res-filen till en resursobjektfil och sedan länka den till den körbara filen i ett program.

Borland's Resource Compiler-kommandoradsverktyg finns i katalogen Delphi Bin. Namnet är BRCC32.exe. Gå bara till kommandotolken och skriv brcc32 och tryck sedan på Enter. Eftersom katalogen Delphi \ Bin finns i din sökväg, anropas Brcc32-kompilatorn och visar användningshjälpen (eftersom den kallades utan parametrar).

För att kompilera AboutDelphi.rc-filen till en .res-fil kör detta kommando vid kommandotolken (i projektkatalogen):

BRCC32 AboutDelphi. RC

BRCC32 namnger som standard den kompilerade resursfilen (.RES) med basnamnet på .RC-filen och placerar den i samma katalog som .RC-filen.

Du kan namnge resursfilen vad du vill, så länge den har tillägget ".RES" och filnamnet utan tillägget är inte detsamma som någon enhet eller projektfilnamn. Detta är viktigt eftersom varje Delphi-projekt som sammanställs till en applikation som standard har en resursfil med samma namn som projektfilen, men med tillägget .RES. Det är bäst att spara filen i samma katalog som din projektfil.

Inklusive (länka / bädda in) resurser till körbara filer

När .RES-filen är länkad till den körbara filen kan applikationen ladda sina resurser vid körning vid behov. För att faktiskt använda resursen måste du ringa några Windows API-samtal.

För att följa artikeln behöver du ett nytt Delphi-projekt med ett blank form (det nya standardprojektet). Lägg naturligtvis till {$ R AboutDelphi. RES} -direktiv till huvudformens enhet. Det är äntligen dags att se hur man använder resurser i en Delphi-applikation. Som nämnts ovan måste vi hantera API för att använda resurser lagrade i en exe-fil. Men flera metoder kan hittas i Delphi hjälpfiler som är "resurs" aktiverade.

Ta till exempel en titt på LoadFromResourceName metod för ett TBitmap-objekt. Den här metoden extraherar den angivna bitmappsresursen och tilldelar den TBitmap-objekt. Det här är * exakt * vad LoadBitmap API-samtal gör. Som alltid har Delphi förbättrat ett API-funktionssamtal som passar dina behov bättre.

Lägg till TMediaPlayer-komponenten till ett formulär (namn: MediaPlayer1) och lägg till en TButton (knapp2). Låt OnClick-händelsen se ut:

Ett mindre * problem * är att applikationen skapar en MP3-låt på en användarmaskin. Du kan lägga till en kod som tar bort den filen innan programmet avslutas.

Utdrag *???

Naturligtvis kan alla andra typer av en binär fil lagras som en RCDATA-typ. TRsourceStream är utformad speciellt för att hjälpa oss extrahera en sådan fil från en körbar. Möjligheterna är oändliga: HTML i ett exe, EXE i exe, tom databas i ett exe, och så vidare.

instagram story viewer