[TUTORIAL]DIRECTIVE DE COMPILATION

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 11 mars 2005 à 19:57
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 15 mars 2005 à 13:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30048-tutorial-directive-de-compilation

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 mars 2005 à 13:29
Voilà, je viens de tester et je comence à comprendre la finalité des directives ...

Juste une petite remarque tout de même: pour ceux qui ont essayé et qui, comme moi sont aller dans les options enlever la directive 'VERSION_TEST', il faut impérativement compiler en faisant BUILD ALL sinon, si vous faites seulement compile ça va pas recompiler les unités non changées et donc, vous serez encore en version Test!
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
14 mars 2005 à 18:36
Merci Lassal pour cette source.
Je viens juste de la telecharger mais malheureusement, je ne pourrais voire cela que demain si tout va bien.
Emandhal Messages postés 194 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 10 octobre 2006 3
14 mars 2005 à 15:17
Je suis d'accord, mais avec ta méthode si je veux recompiler tous les exe, je suis obligé de passer par les options du projet et de choisir la directive, mais je ne peux pas, quand je fais "construire le projet' lui faire faire en une fois :
- Directive de compilation "Version_Normale" -> MonAppli_Normale.exe
- Directive de compilation "Version_Pro" -> MonAppli_Pro.exe

Je suis donc obligé de faire "diective de compilation : Version_Normale" puis "Construire le projet" puis renommer l'exe en "MonAppli_Normale.exe" puis faire "diective de compilation : Version_Pro" puis "Construire le projet" puis renommer l'exe en "MonAppli_Pro.exe". Ce qui est contraignant :s
cs_Lassal Messages postés 27 Date d'inscription jeudi 7 novembre 2002 Statut Membre Dernière intervention 21 mai 2008
14 mars 2005 à 14:00
Bah de rien Delphiprog ;-) en faite c'est après un commentaire de Mauricio justement que je me suis dit que ca pourrait être pas mal de le faire. (D'autant plus que ce jours là c'était plutôt tranquille au boulot)

Sinon Emandhal, justement l'utilisation des directives de compilation, peuvent régler ton problème...
En faites dans le cas par exemple ou tu ne veux pas que l'utilisateur ai accès à un menu ou un bouton dans ton application. Et bien tu peux faire un truc dans le genre

procedure TForm1.FormShow(Sender: TObject);
begin

{$IFDEF VERSION_PRO}
Button1.Visible := True;
{$ELSE}
Button1.Visible := False;
{$ENDIF}

end;

Et donc si tu compiles avec comme directive de compilation "VERSION_PRO" tu auras une version ou le Button1 sera accessible, sinon dans tout aute cas ce bouton ne sera pas accéssible.

En gros en fonction de ta directive de compilation tu prends en compte ou pas certaine partie de ton code.
Emandhal Messages postés 194 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 10 octobre 2006 3
13 mars 2005 à 11:55
Petite question :

Si je veux que avec un projet faire plusieurs exécutables, comment faire avec ces directives? Je veux dire par là, si par exemple je fais un programme et que je veux faire une version normale avec certaines options et une version pro avec plus d'options mais que la version normale ai pas les options supplémentaires de la pro.
On m'a dit qu'il fallait passer par brcc32.exe et de préciser à chaque fois la directive à prendre en compte pour l'exécutable et donc pour faire plusieurs exe, prendre un .bat
Je voudrai juste savoir si vous avez des solutions plus simples où en compilant le projet sous delphi, il crée tous les exe. Je n'ai pas envie de faire 2 projets différents.
Merci d'avance pour vos propositions :)
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
11 mars 2005 à 19:57
Voilà qui m'évitera de faire un tuto pour répondre à Mauricio. Merci lassal ;o)

J'aimerai mentionner une autre façon de procéder, en faisant appel à la directive d'inclusion $i.
Pour cela, il faut créer un fichier texte (par convention avec une extension .inc) et y inscrire toutes les directives que l'on souhaite.
Ensuite, dans chaque unité où l'on souhaite faire appel aux directives, il suffit d'écrire :
unit MachinChose;
{$I directives.inc}

Quand on a des directives qui sont fréquemment utilisées dans différents projets, il est plus intéressant de procéder ainsi. Sinon, il faut penser à modifier les options dans chaque projet concerné.
Rejoignez-nous