03 novembre 2010
publié par 
Il est de plus en plus courant à partir d'un projet unique de créer un exécutable 32 bits, et son homologue 64 bits.

Le code source reste unique dans ce cas, mais il peut être utile de connaître à un moment donné le mode d'exécution. Par exemple pour appeler un programme ou une fonction système, on préférera sa version 32 bits si le programme s'exécute en 32 bits, et bien sûr sa version 64 bits si l'exécution en cours est en 64 bits.

La fonction VersionWindows permet de savoir si Windows est en 32 bits, ou en 64 bits, mais pas l'exécutable en cours.

Deux solutions sont disponibles pour obtenir l'information. La première consiste à s'appuyer sur les configurations créées dans le projet. En effet il est possible avec la fonction ProjetInfo de connaître le nom de la configuration en cours. Si par exemple la configuration du projet permettant de créer la version 64 bits de l'exécutable se nomme "EXE_64", il sera possible d'avoir un booléen global affecté de la façon suivante :

gbEXE_En64bits est un booléen
gbEXE_En64bits = EnModeTest() ? Faux SINON (ProjetInfo(piConfiguration) = "EXE_64"
)

Sans utiliser la configuration en cours, il est possible de s'appuyer sur le fait que la taille d'une variable de type entier système est dépendante du mode d'exécution. Le code suivant permet donc également d'avoir un booléen global à vrai en 64 bits :

gbEXE_En64bits est un booléen
nEntierSystem est un entier système
nEntierSystem = (Dimension(nEntierSystem) * 8)
gbEXE_En64bits =
(nEntierSystem = 64)

A noter qu'une nouvelle fonction WLangage sera ajoutée au Framework version 16 pour obtenir directement l'information.

< Retour