Détendez vous un peu :D



Comment utiliser les fichiers Ressources avec Delphi ?
Qu'est ce qu'un fichier Ressource ?

C'est un Fichier qui contient votre icône, votre version et peu contenir pas mal de choses.

 

Comment créer ce fichier Ressource ?

Comme ce tut parle de l'utilisation d'un ressource, je vous conseille d'utiliser mon programme Res_HiA disponible dans la section Programmes de http://delphicool.developpez.com.


Télécharger l'exemple qui vous aideras à comprendre :


Commençons

Extraire :

  1. Image BMP
  2. Image JPEG
  3. Image GIF
  4. Un fichier Texte
  5. une Icône
  6. Un son Wav
  7. Un son MP3
  8. Un exécutable
  9. Un Curseur
  10. Un Texte d'une StringTable

Pour extraire un ressource dans son application on doit connaître le nom de la Ressource et son Type.
Pour voir de quoi il s'agit, je vous conseille le très bon logiciel Res Hacker, qui vous aideras à comprendre de quoi nous allons parler.

 

Avant j'ai déclaré une variable Res dans VAR, pour pouvoir l'utiliser partout sans la redéclarer à chaque fois :

var
Res : TResourceStream ;



Mon fichier ressource crée avec Res_HiA est inclus dans l'exe comme ceci :

implémentation

{$R, Le_Ressource_en_Plus.res}

 



Image BMP

Voir une Capture avec Res Hacker

Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'MONBMP');

 

HInstance est l'instance de votre Application.
On appelle le Ressource MONBMP, que l'on place dans TImage.

 


 

Image JPEG

Voir une Capture avec Res Hacker

Vous devez d'abord déclarer JPEG dans Uses.

var jpg: TjpegImage;

begin

jpg := TJPEGimage.Create;
Res := TResourceStream.Create(hinstance, 'MONJPEG', RT_RCDATA);
Jpg.LoadFromStream(Res);
Image1.Picture.Bitmap.Assign(jpg);
Res.Free;
jpg.Free;


End;

 

On crée un TJPEGImage qui va acueuillir votre Ressource.

 


 

Image GIF

Voir une Capture avec Res Hacker

Il vous faut un composant GIGImage (disponible sur http://delphicool.developpez.com)
Et déclarer dans GIFImage dans Uses.

var GIF : TGIFImage;
begin

include(GIFImageDefaultDrawOptions, goDirectDraw);

Res := TResourceStream.Create(hinstance, 'MONGIF', 'GIF');
GIF := TGIFImage.Create;
GIF.LoadFromStream(Res);
Image1.Picture.Assign(GIF);
GIF.Free;
Res.Free;

{ Avant de fermer le Form, ne pas oublier de libérer votre TImage
Car le Gif à été crée en DirectDraw

Image1.Picture.Graphic := nil;
}

End;

 


 

Un Fichier Texte

Voir une Capture avec Res Hacker

Res := TResourceStream.Create(0,'MONTXT','TEXT');
MemoTexte.Lines.LoadFromStream(Res);
Res.Free;

 


 

Une Icône

Voir une Capture avec Res Hacker

var
Icone: TIcon;

begin

Icone := TIcon.Create;
Icone.Handle := LoadIcon(HInstance, 'MONICON');
Icon := Icone;
Image1.Picture.Icon := Icon;
Icone.free;


End;

 


 

Un son Wav

Voir une Capture avec Res Hacker

Pour Jouer un WAV il faut déclarer MMSystem dans Uses.

var

Hres: THandle;
Pres: PChar;


begin

Hres := FindResource(0, pchar('MONWAV2'), 'WAV');
// Recherche de la Ressource
Hres := LoadResource(0, Hres); // On charge la Ressource
Pres := LockResource(Hres);
sndPlaySound(Pres, SND_MEMORY); // On joue le WAV
UnLockResource(Hres);
FreeResource(Hres);


End;

 


 

Un son MP3

Voir une Capture avec Res Hacker

Pour jouer du MP3 j'ai utilisé le composant TMediaPlayer.

Res := TResourceStream.Create(0,'MONMP3','MP3');
Res.SaveToFile(ExtractFilePath(Application.ExeName) + 'mon.mp3');
Res.Free;

mp3Joue.Close; // mp3joue est mon TMediaPlayer
mp3Joue.FileName := 'mon.mp3';
mp3Joue.Open;
mp3Joue.Play;


// Sur l'evenement OnClose du Form, mettre mp3Joue.Close;

 


 

Un exécutable

Voir une Capture avec Res Hacker

var path : string;

begin

path := ExtractFilePath(Application.ExeName); // Je recup le Chemin de mon exe

Res := TResourceStream.Create(0,'MONEXE','EXEFILE');
Res.SaveToFile(path + 'Monexe.exe');
Res.Free;

WinExec(Pchar(path + 'Monexe.exe'),sw_normal); // On exécute l'exe

End;

 

Pour executer l'exe qui est dans mon application, je l'extrai dans le répertoire de l'application.


 

Un Curseur

Voir une Capture avec Res Hacker

Screen.Cursors[1] := LoadCursor(HInstance, 'MONCURSEUR'); // On extrait le Curseur du Ressource
Button12.Cursor := 1; // On lui dit ou le curseur doit apparaître
Self.Cursor := 1; // On lui dit ou le curseur doit apparaître

 


 

Un Texte d'une StringTable

Voir une Capture avec Res Hacker

var montexte: array[0..255] of Char;

begin

LoadString(hInstance, 0, montexte, 255);
// 0 est l'index de ma Ligne de Texte
MemoTexte.Lines.Text := montexte;

End;

Les Textes des StringTable, on un Index, c'est par celui ci qu'on les appellent.

 


Je n'ai pas la prétention de vous apprendre comment utiliser les Ressources.
Mais de vous montrer ce que j'ai appris.
Biensur je sais qu'il à certainement plus simple à faire que ce que j'ai fait, mais pour un débutant comme moi, je ne l'ai connait pas encore, alors je vous prie d'être un peu indulgent avec moi, Merci.

par DelphiCool

 

Haut de page