Comment créer correctement un fichier de ressource ?

rguef Messages postés 29 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 février 2006 - 21 déc. 2003 à 15:53
rguef Messages postés 29 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 février 2006 - 20 nov. 2004 à 11:12
Je cherche à créer un fichier de ressource externe. Je n'y arrive plus !
Windows me met comme message

"L'application ou la DLL 'XXXXXXXXXXXX' n'est pas une image Windows valide. Vérifiez à l'aide de votre disquette d'installation."

Sachant que crée un fichier .rc et le compile en suite avec brcc32.exe, qui me donne un fichier .res.

Où est l'erreur ???

WezzaR

9 réponses

yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
22 déc. 2003 à 22:04
Compiler un fichier ressource

Création d'un fichier res

Pour créer le fichier res, il suffit d'utiliser un éditeur de texte comme par exemple le Bloc-Notes de Windows.

Astuce : Pour ne pas être obligé de tapez le chemin complet, réunissez toutes les ressources dont vous avez besoin dans un seul répertoire.

Pour ajouter une ressource au fichier res, la syntaxe est construite comme ceci :

Identificateur TYPE NomFichier

Identificateur permet ensuite dans l'utilisation de référencer le fichier correspondant.

Ajouter un bitmap
Identificateur BITMAP NomBitmap.bmp
Ajouter un icône
Identificateur ICON NomIcone.ico
Ajouter un curseur
Identificateur CURSOR NomCurseur.cur
Ajouter un wav
Identificateur WAVE NomWav.wav
Ajouter un avi
Identificateur AVI NomAvi.avi
Ajouter un fichier html
Identificateur HTML NomHtml..html
Ajouter un fichier
Identificateur RCDATA NomFichier.extension



Lorsque vous avez terminé avec l'ajout de ressources, vous ne devez pas oublier de mettre l'extension RC au fichier.

Exemple de fichier RC :

curs CURSOR curs.cur
image BITMAP btmpcurs.bmp
son4 SOUND son.wav


Ensuite pour créer le fichier REC, vous pouvez utiliser le compilateur de ressource Borland.
Vous trouverez le compilateur dans le chemin "Borland\Delphi\Bin\brcc32.exe".
Pour compiler le fichier RC, il suffit de l'ouvrir en sélectionnant le compilateur Delphi.

Voici la marche à suivre pour compiler votre fichier :
Ouvrez l'explorateur Windows ou le poste de travail.
Ensuite, sélectionnez le fichier RC et cliquez sur le bouton droit de la souris.
Le menu déroulant de Windows s'ouvre. Cliquez sur "Ouvrir avec...".
Une fenêtre de titre "Ouvrir avec" est alors ouverte. Cliquez sur le bouton "Autre...".
Sélectionnez le compilateur Delphi dans le chemin "Borland\Delphi\Bin\brcc32.exe". Cliquez sur le bouton "Ouvrir".
Validez l'opération en cliquant maintenant sur le bouton "Ok" de la fenêtre "Ouvrir avec".
Votre fichier REC sera alors créé.

Intégrer un fichier ressources à un executable

Pour intégrer un fichier ressources à votre projet, il suffit d'insérer {$R nomfichier.res} dans votre programme.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
{$R nomfichier.res}

PlaySound('son4',hInstance,snd_resource or snd_async);

end.


ce tutoriel n'est pas de moi mais assez explicite ...
je cherche l'original...

je sais plus mais ...

yve
0
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
22 déc. 2003 à 22:09
bon
je l'ai retrouver ...

ici c'est mieux
yve
0
rguef Messages postés 29 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 février 2006
23 déc. 2003 à 11:56
Merci yve mais le problème c'est j'ouvre une ressource externe, qui n'est donc pas intégrée au programme avec "{$R nomfichier.res}" !

J'utilise la commande :

Ressource:=LoadLibrary(pchar(cbModele.text));

WezzaR
0
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
23 déc. 2003 à 19:20
la question serait "comment utiliser une DLL comme simple Resource file" ....un avantage oui ,toutes applications peuvent avoir accès aux ressources :fiches,images,son,...inclu dans la dll.

bon si je comprends bien ,j'ai fais une dll vide et j'ai ajouter une ressource comme on le ferais avec une application .j'ai construit ,ce qui me donne une dll nommé Project1.dll
que je copies dans le même répertoire que l'application qui souhaite utiliser les ressources de la dll

ensuite toute appel à "hinstance" que je ferais si les resources serait dans l'application se transforment en THandle de la dll.

procedure TForm1.Button1Click(Sender: TObject);
var
Ressource:THandle;
begin
Ressource:=SafeLoadLibrary('Project1.dll');
if( Ressource>0)then
try
try
PlaySound('debut',Ressource,snd_resource or snd_async);

except;
end;
finally
FreeLibrary(Ressource);
end;
end;

ici ^ca fonctionne ,or j'imagine qu'avec une image ou autre tant que l'on connait les params (le nom des items...

dans ma resource j'ai simplement inclus
debut SOUND debut.wav

comme l'application n'a aucun lien avec la dll ,on doit s'assurer qu'elle est bien dans le même répertoire ,en cas d'erreur Resource =0

yve
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
23 déc. 2003 à 19:30
pour la dll ...

library Project1;
uses
SysUtils,
Classes;
{$R *.res}
{$R Sons2.res} //fichier resource

{ -creation d'une dll ,(fichier /nouveau/autre/expert dll
-sauvegarde dans un répertoire,
-construire
-donne Project1.dll
}
begin
end.

yve
0
rguef Messages postés 29 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 février 2006
24 déc. 2003 à 14:41
Merci !
ça fonctionne maintenant !
WezzaR
0
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
24 déc. 2003 à 16:00
ouf il était tard !!!

"comme l'application n'a aucun lien avec la dll ,on doit s'assurer qu'elle est bien dans le même répertoire"=faux

on peut placer la dll n'importe où il suffira de connaître le chemin...

modifiez la procédure plutôt comme ceci

function
result:=true;
try
try
Ressource...(à l'intérieur des 2 try )
...

except result:=false;
end;
finally
FreeLibrary(Ressource);
end;

peut-être qu'une function serait mieux car pour moi lors du premier click le chargement ne se fait pas toujours

or avec une function on connait le résultat
la c'est tout !!!
yve
0
Mopii9 Messages postés 91 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 23 mai 2005
19 nov. 2004 à 18:46
excusez moi mais j'ai rien capté à la création d'un fichier ressource sous delphi. C'est un tout petit peu compliquer en vb au moins en trois click c'est réglé mais maintenant je voudrais capter delphi et c'est pas gagné! ! !
0
rguef Messages postés 29 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 22 février 2006
20 nov. 2004 à 11:12
0
Rejoignez-nous