CompilerIf

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

CompilerIf

Message par Chris »

Est-ce que quelqu'un pourrait me dire si il existe une directive pour dire au compilateur de ne pas traiter une partie du code quand on teste le programme sans le debugger?

Par exemple, dans le code ci-dessous, le fichier est préservé quand on teste avec le debugger (F6), mais pas quand on teste sans le debugger (F5).

Code : Tout sélectionner

CompilerIf #PB_Compiler_Debugger = 0
  DeleteFile("Mon Fichier.txt")
CompilerEndIf
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

pas a ma connaissance mais je ne connais pas grand chose coté compilateur je dois le dire.

moi je ferais un truc du genre

Code : Tout sélectionner

;debut du programme

global debug=1

...
...

if debug=0
   if filesize("Mon Fichier.txt")<>-1
      DeleteFile("Mon Fichier.txt") 
   endif
endif

bien sur le compilateur le traitera comme du code et le testera aussi pendant l'exécution du programme

mais a moins que ce ne soit dans une boucle ca ne devrais pas être gênant
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Re: CompilerIf

Message par Dr. Dri »

Chris a écrit :Est-ce que quelqu'un pourrait me dire si il existe une directive pour dire au compilateur de ne pas traiter une partie du code quand on teste le programme sans le debugger?

Par exemple, dans le code ci-dessous, le fichier est préservé quand on teste avec le debugger (F6), mais pas quand on teste sans le debugger (F5).

Code : Tout sélectionner

CompilerIf #PB_Compiler_Debugger = 0
  DeleteFile("Mon Fichier.txt")
CompilerEndIf
je ne comprends pas vraiment la question, ton exemple devrait fonctionner. peut-être que tu utilises jaPBe. Teste ce code, ça fonctionne très bien :

Code : Tout sélectionner

CompilerIf #PB_Compiler_Debugger
  MessageRequester("Debug", "Debug actif")
CompilerElse
  MessageRequester("Debug", "Debug inactif")
CompilerEndIf
Dri
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

@Dri.
J'ai déjà essayé le code que tu donnes, avec jaPBe et avec l'éditeur de PB et le résultat est le même.
Avec le débugger, j'ai "Debug actif", et sans le debugger, j'ai "Debug inactif".

La question est : Est-ce qu'il existe un moyen de dire au compilo que je suis en train de tester le programme, et pas en train de créer l'éxécutable final.

Et que je teste avec ou sans le debugger, il ne faut pas compiler cette partie du code.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Perso je crée une constante que je comment ou pas :

Code : Tout sélectionner

#MODE_DEBUG = 1
Puis je tester si elle est déclarer avec :

Code : Tout sélectionner

CompilerIf Defined(MODE_DEBUG, #PB_Constant)
  Debug "Je debugge !"
CompilerEndIf
Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

lionel_om a écrit :Perso je crée une constante que je comment ou pas :

Code : Tout sélectionner

#MODE_DEBUG = 1
Puis je tester si elle est déclarer avec :

Code : Tout sélectionner

CompilerIf Defined(MODE_DEBUG, #PB_Constant)
  Debug "Je debugge !"
CompilerEndIf
Lio
Dans ce cas, c'est aussi rapide pour moi de commenter la ligne quand je teste

Code : Tout sélectionner

; DeleteFile("Mon Fichier.txt")
et de la décommenter quand je crée l'éxécutable.

Code : Tout sélectionner

DeleteFile("Mon Fichier.txt")
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Ca dépend si t'as le test qu'une fois ou pas...
Et l'avantage de cette constante, c'est que tu le mets au début d'un fichier et tu trouves l'endroit direct.

Mais tu parles de quoi en faite ? Voir si tu as lancer ton prog avec F5 (donc exécutable au nom "PureBasic_Prog1", ou qqchose comme ça) ou si c'est l'EXE final ?
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Laissez tomber!
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

Chris a écrit :Laissez tomber!
ben pourquois ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Chris a écrit :@Dri.
J'ai déjà essayé le code que tu donnes, avec jaPBe et avec l'éditeur de PB et le résultat est le même.
Avec le débugger, j'ai "Debug actif", et sans le debugger, j'ai "Debug inactif".

La question est : Est-ce qu'il existe un moyen de dire au compilo que je suis en train de tester le programme, et pas en train de créer l'éxécutable final.

Et que je teste avec ou sans le debugger, il ne faut pas compiler cette partie du code.
Dans l'éditeur PB (je connais pas jaPBe) va dans le menu :
Compiler -> Compiler Options
Va dans l'onglet Constants
Et ajoute une constante "#TEST = #True" que tu pourras cocher ou décocher à volonté

dans ton code tu n'as plus qu'à tester (coché et décoché) ce code :

Code : Tout sélectionner

CompilerIf Defined(TEST, #PB_Constant)
  Debug "ne fais rien"
CompilerElse
  Debug "suppression du fichier"
CompilerEndIf
[edit]
solution encore plus simple, l'éditeur PB fait exactement ce que tu veux.
sur l'onglet des constantes il te suffit de cocher #PB_Editor_CreateExecutable
(tu peux le mettre par défaut à tous les projets dans les préférences)

Du coup ce code suffit :

Code : Tout sélectionner

CompilerIf #PB_Editor_CreateExecutable
  MessageRequester("Debug", "suppression")
CompilerElse
  MessageRequester("Debug", "rien")
CompilerEndIf
Dri
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

@ Dri.
Bon, j'ai regardé un peu ça. La constante #PB_Editor_CreateExecutable n'existe pas dans l'éditeur de PureBasic v4.02. Seulement dans la version 4.10.
Du coup, on ne la trouve pas non plus dans jaPBe.

Par contre, pour jaPBe, il y a une constante #jaPBe_IsExecute qui fait la même chose.

Code : Tout sélectionner

CompilerIf #jaPBe_IsExecute; La compilation se fait par la commande "Creer un executable"
DeleteFile("MonFichier.txt") 
CompilerEndif
Ca fonctionne comme je veux. Merci. :wink:
Répondre