Come aggiungere file di risorse negli eseguibili di Delphi

Devono essere anche giochi e altri tipi di applicazioni che utilizzano file multimediali come suoni e animazioni distribuire i file multimediali extra insieme all'applicazione o incorporare i file all'interno di eseguibile.

Invece di distribuire file separati per l'uso dell'applicazione, è possibile aggiungere i dati non elaborati all'applicazione come risorsa. È quindi possibile recuperare i dati dall'applicazione quando è necessario. Questa tecnica è generalmente più desiderabile perché può impedire ad altri di manipolare i file dei componenti aggiuntivi.

Questo articolo ti mostrerà come incorporare (e usare) file audio, videoclip, animazioni e più in generale qualsiasi tipo di file binario in un eseguibile di Delphi. Per lo scopo più generale, vedrai come inserire un File MP3 dentro a Delphi EXE.

File di risorse (.RES)

Nel "File di risorse semplificati"articolo che ti è stato presentato con diversi esempi sull'uso di bitmap, icone e cursori dalle risorse. Come indicato in questo articolo, possiamo usare l'editor di immagini per creare e modificare risorse costituite da tali tipi di file. Ora, quando siamo interessati a memorizzare vari tipi di file (binari) all'interno di un eseguibile Delphi, dovremo occuparci dei file di script di risorse (.rc), il

instagram viewer
Compilatore di risorse Borland strumento e altro.

L'inclusione di diversi file binari nell'eseguibile prevede 5 passaggi:

  1. Crea e / o raccogli tutti i file che desideri inserire in un exe.
  2. Crea un file di script di risorse (.rc) che descriva quelle risorse utilizzate dalla tua applicazione,
  3. Compilare il file di script di risorse (.rc) per creare un file di risorse (.res),
  4. Collega il file di risorse compilato al file eseguibile dell'applicazione,
  5. Usa singolo elemento di risorsa.

Il primo passo dovrebbe essere semplice, devi semplicemente decidere quali tipi di file desideri archiviare nel tuo eseguibile. Ad esempio, memorizzeremo due brani .wav, una animazioni .ani e un brano .mp3.

Prima di andare avanti, ecco alcune importanti dichiarazioni relative alle limitazioni quando si lavora con le risorse:

  • Caricare e scaricare risorse non è un'operazione che richiede tempo. Le risorse fanno parte del file eseguibile delle applicazioni e vengono caricate contemporaneamente all'esecuzione dell'applicazione.
  • Tutta la memoria (libera) può essere utilizzata per caricare / scaricare risorse. In altre parole, non ci sono limiti al numero di risorse caricate contemporaneamente.
  • Naturalmente, i file di risorse raddoppiano le dimensioni di un eseguibile. Se desideri eseguibili più piccoli, considera la possibilità di posizionare risorse e parti del tuo progetto in a libreria a collegamento dinamico (DLL) o è di più variazione specializzata.

Vediamo ora come creare un file che descrive le risorse.

Creazione di un file di script di risorse (.RC)

Un file di script di risorse è un semplice file di testo con estensione .rc che elenca le risorse. Il file di script è in questo formato:

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

RexName specifica un nome univoco o un valore intero (ID) che identifica la risorsa. ResType descrive il tipo di risorsa e il ResFileName è il percorso completo e il nome del file per il singolo file di risorse.

Per creare un nuovo file di script delle risorse, procedi come segue:

  1. Crea un nuovo file di testo nella directory dei tuoi progetti.
  2. Rinominalo in AboutDelphi.rc.

Nel file AboutDelphi.rc, hanno le seguenti righe:

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

Il file di script definisce semplicemente le risorse. Seguendo il formato specificato, lo script AboutDelphi.rc elenca due file .wav, un'animazione .avi e una canzone .mp3. Tutte le istruzioni in un file .rc associano un nome identificativo, un tipo e un nome file per una determinata risorsa. Esistono circa una dozzina di tipi di risorse predefiniti. Questi includono icone, bitmap, cursori, animazioni, canzoni, ecc. RCDATA definisce risorse di dati generici. RCDATA consente di includere una risorsa di dati non elaborati per un'applicazione. Le risorse di dati non elaborati consentono l'inclusione di dati binari direttamente nel file eseguibile. Ad esempio, l'istruzione RCDATA sopra nomina la intro della risorsa binaria dell'applicazione e specifica il file introsong.mp3, che contiene il brano per quel file MP3.

Nota: assicurati di avere tutte le risorse che elenchi nel tuo file .rc disponibile. Se i file si trovano nella directory dei progetti, non è necessario includere il nome completo del file. Nel mio file .rc le canzoni .wav si trovano * da qualche parte * sul disco e sia l'animazione che la canzone MP3 si trovano nella directory del progetto.

Creazione di un file di risorse (.RES)

Per utilizzare le risorse definite nel file di script delle risorse, è necessario compilarlo in un file .res con il compilatore di risorse di Borland. Il compilatore di risorse crea un nuovo file basato sul contenuto del file di script delle risorse. Questo file di solito ha un'estensione .res. Il linker Delphi riformatterà successivamente il file .res in un file oggetto risorsa e quindi lo collegherà al file eseguibile di un'applicazione.

Lo strumento da riga di comando del Borland's Resource Compiler si trova nella directory Delphi Bin. Il nome è BRCC32.exe. Vai semplicemente al prompt dei comandi e digita brcc32 quindi premi Invio. Poiché la directory Delphi \ Bin si trova nel tuo percorso, il compilatore Brcc32 viene richiamato e visualizza la guida all'uso (poiché è stato chiamato senza parametri).

Per compilare il file AboutDelphi.rc in un file .res, eseguire questo comando al prompt dei comandi (nella directory dei progetti):

BRCC32 AboutDelphi. RC

Per impostazione predefinita, durante la compilazione di risorse, BRCC32 nomina il file di risorsa compilato (.RES) con il nome di base del file .RC e lo posiziona nella stessa directory del file .RC.

È possibile nominare il file di risorse come desiderato, purché abbia l'estensione ".RES" e il nome file senza l'estensione non sia uguale a qualsiasi nome unità o progetto. Questo è importante perché, per impostazione predefinita, ogni progetto Delphi che si compila in un'applicazione ha un file di risorse con lo stesso nome del file di progetto, ma con l'estensione .RES. È meglio salvare il file nella stessa directory del file di progetto.

Incluse risorse (collegamento / incorporamento) in file eseguibili

Dopo che il file .RES è stato collegato al file eseguibile, l'applicazione può caricare le sue risorse in fase di esecuzione, se necessario. Per utilizzare effettivamente la risorsa, dovrai effettuare alcune chiamate all'API di Windows.

Per seguire l'articolo, avrai bisogno di un nuovo progetto Delphi con a modulo vuoto (il nuovo progetto predefinito). Naturalmente aggiungi {$ R AboutDelphi. Direttiva RES} sull'unità del modulo principale. È finalmente giunto il momento di vedere come utilizzare le risorse in un'applicazione Delphi. Come accennato in precedenza, al fine di utilizzare le risorse memorizzate in un file exe, abbiamo a che fare con l'API. Tuttavia, nei file della guida di Delphi sono disponibili diversi metodi abilitati per "risorsa".

Ad esempio, dai un'occhiata a LoadFromResourceName metodo di un oggetto TBitmap. Questo metodo estrae la risorsa bitmap specificata e le assegna l'oggetto TBitmap. Questo è * esattamente * ciò che fa la chiamata API LoadBitmap. Come sempre Delphi ha migliorato una chiamata di funzione API per soddisfare meglio le tue esigenze.

Ora, aggiungi il componente TMediaPlayer a un modulo (nome: MediaPlayer1) e aggiungi un TButton (Button2). Lascia che l'evento OnClick assomigli a:

Un piccolo * problema * è che l'applicazione crea un brano MP3 su un computer dell'utente. È possibile aggiungere un codice che elimina quel file prima che l'applicazione venga chiusa.

Estrazione *???

Naturalmente, ogni altro tipo di file binario può essere archiviato come tipo RCDATA. TRsourceStream è progettato appositamente per aiutarci a estrarre tale file da un eseguibile. Le possibilità sono infinite: HTML in un exe, EXE in un exe, database vuoto in un exe e così via.

instagram story viewer