Inclures des images dans le projet (executable)

[Résolu]
Signaler
Messages postés
87
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2009
-
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
-
Bonsoir à tous et à toutes,

Voilà mon souci, j'ai crée une petite application nécessitant des images chargées aléatoirement.
Pour le moment, il faut que je laisse le dossier source des images avec l'exécutable pour qu'elles soient correctement chargées et je voulais savoir si il n'y avait pas la possibilité d'inclure les images (ou le dossier) à l'exécutable afin de plus avoir à garder ce dossier :)

Merci d'avance.
Cordialement,
NivekR

11 réponses

Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
@bacterius: 0 et hInstance sont plus ou moins equivalent dans ce cas. 0 signifie qu'il va aller piocher les resources dans l'app courante, hInstance est le handle de l'app courante --> meme resultat.
En revanche si tu utilise cette ligne dans un composant (bpl), il faut absolument que tu precise hInstance, car hinstance est le handle du bpl, 0 est le handle de delphi, donc il recherchera ta resource dans celle de delphi ! (du moins c'est ce que je me suis dit apres quelques investigations lorsque je suis tombé sur ce probleme).

@nivekr:
MonBitmap: TBitmap; // qui est par exemple Image1.Picture.Bitmap;
si tu as plusieurs images, ca marche de la meme maniere :
fichier .rc :
ID_IMAGE_1  BITMAP  "image1.bmp"
ID_IMAGE_2  BITMAP  "image2.bmp"
fichier .pas :
Image1.Picture.Bitmap.LoadFromResourceName(0, 'ID_IMAGE_1');

Image2.Picture.Bitmap.LoadFromResourceName(0, 'ID_IMAGE_2');
etc...
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Messages postés
87
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2009

Merci,

Malheureusement, sous Vista, le logiciel ne fonctionne pas :( Et je n'ai pas de PC XP sous la main :(
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
alors resumé en 4 etapes :
- un fichier MonFichier.rc contenant des lignes de la forme:
NOM_DE_LA_RESOURCE    BITMAP    "UneImage.bmp"
- compiler le rc avec brcc32 (a cote de delphi.exe)
brcc32.exe MonFichier.rc
- inclure le RES generé a l'etape precedente a une unite ou au dpr, grace a la ligne
{$R MonFichier.res}
- charger ton image depuis la resource :
MonBitmap.LoadFromResourceName(0, 'NOM_DE_LA_RESOURCE');
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Guillemouze n'est-il pas nécessaire de passer le HInstance de l'application au LoadFromResourceName ? Ca a toujours été une question pour moi, peux-tu m'éclairer là-dessus ?

Cordialement, Bacterius !
Messages postés
87
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2009

Merci, je vais essayer ceci au plus tôt.

Quand on a plusieurs images, comment fait-on pour les distinguer lors de l'appel?
"MonBitmap.LoadFromResourceName(0, 'NOM_DE_LA_RESOURCE');"
"MonBitMap" est le nom donnée à l'image?

Merci encore^^
Cordialement,
NivekR
Messages postés
87
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2009

Ma question va peut-être vous paraître stupide^^ mais...

Comment fait-on pour compiler avec 'brcc32' ?

Merci encore^^
Cordialement,
NivekR
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
je te l'ai mis !

brcc32.exe MonFichier.rc
- soit par la console (n'oublie pas de mettre les chemins complets dans ce cas la)
- soit par l'explorateur : tu fais glisser ton fichier .rc sur brcc32 et ca devrait marcher je pense (mais tu ne verra pas les messages d'erreur s'il y en a)
moi j'ai fait un batch:
brcc.bat
"%programfiles%\borland\delphi7\bin\brcc32.exe" %1
pause
que j'ai mis dans le dossier windows qui est accessible de partout
Messages postés
87
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2009

Merci, j'ai réussi.

J'ai crée un fichier RC avec le Bloc-Notes puis je l'ai ouvert avec BRCC32 ('Ouvrir avec...') et il m'a crée le fichier RES que j'ai intégré à mon projet.

Et c'est nickeeeeeeeeeellllllllllllllllllll !!!!!!!!!

Merci encore :)

Cordialement,
NivekR
Messages postés
87
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2009

Ah oui, par contre, le code différencie un peu...

Mon code pour une image est 'Image1.Picture.Bitmap.Handle:=LoadBitmap(hInstance, 'ID_IMAGE_1');'
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Erf ça ne marche pas avec LoadFromResourceName ? Ces méthodes sont optimisées (100% garantie VCL), alors qu'avec LoadBitmap il faut vérifier plein de trucs ... si la ressource a bien été trouvée, si il n'y a pas d'erreur, etc ... Enfin ça revient au même mais les méthodes du TBitmap sont optimisées :p

Cordialement, Bacterius !