Hoe bronbestanden toe te voegen in uitvoerbare bestanden van Delphi

Games en andere soorten toepassingen die multimediabestanden gebruiken, zoals geluiden en animaties, moeten dat ook zijn distribueer de extra multimediabestanden samen met de toepassing of sluit de bestanden in de uitvoerbaar.

In plaats van afzonderlijke bestanden te distribueren voor gebruik door uw toepassing, kunt u de onbewerkte gegevens als bron aan uw toepassing toevoegen. U kunt vervolgens de gegevens uit uw toepassing ophalen wanneer dit nodig is. Deze techniek is over het algemeen wenselijker omdat het anderen ervan kan weerhouden die invoegtoepassingsbestanden te manipuleren.

Dit artikel laat het je zien hoe geluidsbestanden, videoclips, animaties en meer in het algemeen elke vorm van binaire bestanden in te sluiten (en te gebruiken) in een Delphi-uitvoerbaar bestand. Voor het meest algemene doel zul je zien hoe je een MP3 bestand binnen een Delphi exe.

Bronbestanden (.RES)

In de "Bronbestanden gemakkelijk gemaakt"artikel dat u verschillende voorbeelden kreeg van het gebruik van bitmaps, pictogrammen en

instagram viewer
cursors uit bronnen. Zoals in dat artikel wordt vermeld, kunnen we de Afbeeldingseditor gebruiken om bronnen te maken en te bewerken die uit dergelijke typen bestanden bestaan. Als we nu geïnteresseerd zijn in het opslaan van verschillende soorten (binaire) bestanden in een Delphi-uitvoerbaar bestand, moeten we omgaan met resource script-bestanden (.rc), de Borland broncompiler gereedschap en andere.

Het opnemen van verschillende binaire bestanden in uw uitvoerbare bestand bestaat uit 5 stappen:

  1. Maak en / of verzamel alle bestanden die u in een exe wilt plaatsen.
  2. Maak een bronscriptbestand (.rc) dat de bronnen beschrijft die door uw applicatie worden gebruikt,
  3. Compileer het resource script file (.rc) bestand om een ​​resource bestand (.res) aan te maken,
  4. Koppel het gecompileerde bronbestand aan het uitvoerbare bestand van de toepassing,
  5. Gebruik een individueel resource-element.

De eerste stap moet eenvoudig zijn, gewoon beslissen welke soorten bestanden u wilt opslaan in uw uitvoerbare bestand. We slaan bijvoorbeeld twee .wav-nummers, één .ani-animaties en één .mp3-nummer op.

Voordat we verder gaan, zijn hier een paar belangrijke opmerkingen over beperkingen bij het werken met bronnen:

  • Het laden en lossen van middelen is geen tijdrovende operatie. Bronnen maken deel uit van het uitvoerbare bestand van de toepassing en worden tegelijkertijd geladen wanneer de toepassing wordt uitgevoerd.
  • Al het (gratis) geheugen kan worden gebruikt bij het laden / lossen van bronnen. Met andere woorden, er zijn geen grenzen aan het aantal bronnen dat tegelijkertijd wordt geladen.
  • Natuurlijk zijn bronbestanden het dubbele van een uitvoerbaar bestand. Als u kleinere uitvoerbare bestanden wilt, kunt u overwegen bronnen en delen van uw project in een dynamische linkbibliotheek (DLL) of het is meer gespecialiseerde variatie.

Laten we nu kijken hoe we een bestand kunnen maken dat bronnen beschrijft.

Een Resource Script-bestand (.RC) maken

Een hulpscriptbestand is een eenvoudig tekstbestand met de extensie .rc dat bronnen weergeeft. Het scriptbestand heeft de volgende indeling:

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

Rexnaam geeft een unieke naam of een geheel getal (ID) aan die de bron identificeert. ResType beschrijft het type resource en de ResFileName is het volledige pad en de bestandsnaam naar het individuele bronbestand.

Ga als volgt te werk om een ​​nieuw bronscriptbestand te maken:

  1. Maak een nieuw tekstbestand in uw projectmap.
  2. Wijzig de naam in AboutDelphi.rc.

In het bestand AboutDelphi.rc hebben de volgende regels:

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

Het scriptbestand definieert eenvoudigweg bronnen. Volgens het gegeven formaat bevat het AboutDelphi.rc-script twee .wav-bestanden, een .avi-animatie en een .mp3-nummer. Alle instructies in een .rc-bestand hebben een identificerende naam, type en bestandsnaam voor een bepaalde bron. Er zijn ongeveer een dozijn vooraf gedefinieerde resourcetypen. Deze omvatten pictogrammen, bitmaps, cursors, animaties, liedjes, enz. De RCDATA definieert generieke gegevensbronnen. Met RCDATA kunt u een onbewerkte gegevensbron voor een toepassing opnemen. Met onbewerkte gegevensbronnen kunnen binaire gegevens rechtstreeks in het uitvoerbare bestand worden opgenomen. De RCDATA-instructie hierboven geeft bijvoorbeeld de binaire bron Intro van de toepassing aan en geeft het bestand introsong.mp3 aan, dat het nummer voor dat MP3-bestand bevat.

Opmerking: zorg ervoor dat u alle bronnen in uw .rc-bestand beschikbaar hebt. Als de bestanden zich in uw projectmap bevinden, hoeft u niet de volledige bestandsnaam op te nemen. In mijn .rc-bestand staan ​​.wav-nummers * ergens * op de schijf en zowel de animatie als het MP3-nummer bevinden zich in de map van het project.

Een bronbestand (.RES) maken

Om de bronnen te gebruiken die in het bronscriptbestand zijn gedefinieerd, moeten we het compileren naar een .res-bestand met de Resource Compiler van Borland. De resource-compiler maakt een nieuw bestand op basis van de inhoud van het resource-scriptbestand. Dit bestand heeft meestal de extensie .res. De Delphi-linker zal het .res-bestand later opnieuw formatteren in een bronobjectbestand en het vervolgens koppelen aan het uitvoerbare bestand van een toepassing.

Het opdrachtregelprogramma van Borland's Resource Compiler bevindt zich in de map Delphi Bin. De naam is BRCC32.exe. Ga gewoon naar de opdrachtprompt en typ brcc32 en druk op Enter. Aangezien de Delphi \ Bin-directory zich in uw pad bevindt, wordt de Brcc32-compiler aangeroepen en wordt de gebruikshulp weergegeven (omdat deze zonder parameters werd aangeroepen).

Om het bestand AboutDelphi.rc te compileren naar een .res-bestand, voert u deze opdracht uit vanaf de opdrachtprompt (in de map projecten):

BRCC32 Over Delphi. RC

Bij het compileren van bronnen geeft BRCC32 standaard het gecompileerde bronbestand (.RES) een naam met de basisnaam van het .RC-bestand en plaatst het in dezelfde map als het .RC-bestand.

U kunt het bronbestand elke gewenste naam geven, zolang het de extensie ".RES" heeft en de bestandsnaam zonder de extensie niet hetzelfde is als de bestandsnaam van een eenheid of project. Dit is belangrijk omdat elk Delphi-project dat in een toepassing wordt gecompileerd, standaard een bronbestand heeft met dezelfde naam als het projectbestand, maar met de extensie .RES. U kunt het bestand het beste opslaan in dezelfde map als uw projectbestand.

Inclusief (koppelen / insluiten) bronnen aan uitvoerbare bestanden

Nadat het .RES-bestand is gekoppeld aan het uitvoerbare bestand, kan de toepassing de benodigde bronnen tijdens uitvoering uitvoeren. Om de bron daadwerkelijk te gebruiken, moet u enkele Windows API-aanroepen doen.

Om het artikel te volgen, heb je een nieuw Delphi-project nodig met een leeg formulier (het standaard nieuwe project). Voeg natuurlijk de {$ R AboutDelphi toe. RES} richtlijn voor de eenheid van het hoofdformulier. Het is eindelijk tijd om te zien hoe bronnen in een Delphi-toepassing kunnen worden gebruikt. Zoals hierboven vermeld, hebben we om API's te gebruiken die in een exe-bestand zijn opgeslagen, te maken met API. Er zijn echter verschillende methoden te vinden in de Delphi-helpbestanden die "resource" zijn ingeschakeld.

Kijk bijvoorbeeld eens naar de LoadFromResourceName methode van een TBitmap-object. Deze methode extraheert de opgegeven bitmapresource en wijst het TBitmap-object toe. Dit is * precies * wat de LoadBitmap API-aanroep doet. Zoals altijd heeft Delphi een API-functie-aanroep verbeterd om beter aan uw behoeften te voldoen.

Voeg nu de component TMediaPlayer toe aan een formulier (naam: MediaPlayer1) en voeg een TButton (Button2) toe. Laat het OnClick-evenement eruit zien:

Een klein * probleem * is dat de applicatie een MP3-nummer maakt op een gebruikersmachine. U kunt een code toevoegen waarmee dat bestand wordt verwijderd voordat de toepassing wordt beëindigd.

Extraheren *???

Natuurlijk kan elk ander type binair bestand worden opgeslagen als een RCDATA-type. De TRsourceStream is speciaal ontworpen om ons te helpen een dergelijk bestand uit een uitvoerbaar bestand te extraheren. De mogelijkheden zijn eindeloos: HTML in een exe, EXE in exe, lege database in een exe, enzovoort.

instagram story viewer