Inclures des images dans le projet (executable)

Résolu
NivekR Messages postés 87 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 28 avril 2009 - 21 avril 2009 à 22:43
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 22 avril 2009 à 15:05
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

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
22 avril 2009 à 10:42
@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...
3
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
21 avril 2009 à 22:48
0
NivekR Messages postés 87 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 28 avril 2009
21 avril 2009 à 23:11
Merci,

Malheureusement, sous Vista, le logiciel ne fonctionne pas :( Et je n'ai pas de PC XP sous la main :(
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
22 avril 2009 à 00:13
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');
0

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

Posez votre question
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 avril 2009 à 00:28
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 !
0
NivekR Messages postés 87 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 28 avril 2009
22 avril 2009 à 03:15
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
0
NivekR Messages postés 87 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 28 avril 2009
22 avril 2009 à 13:54
Ma question va peut-être vous paraître stupide^^ mais...

Comment fait-on pour compiler avec 'brcc32' ?

Merci encore^^
Cordialement,
NivekR
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
22 avril 2009 à 14:03
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
0
NivekR Messages postés 87 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 28 avril 2009
22 avril 2009 à 14:51
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
0
NivekR Messages postés 87 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 28 avril 2009
22 avril 2009 à 14:53
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');'
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 avril 2009 à 15:05
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 !
0
Rejoignez-nous