Hello everyone !
I post in the bug section because of 2 reasons:
- The response of the compilo, which are not (in my opinion) appropriate ... see 3rd my test!
- Difficult to detect (with CompilerIf Defined (test, #PB_Procedure) = #False) the previous statements made in the main program!
Here comes my proposal (which I should have put in the section: Suggestion and improvement!
But in the bug section, I'm sure Fred will take a look!
To understand, my approach will see there: http://www.purebasic.fr/french/viewtopi ... =1&t=17236
(sorry it's in french)
Test code (lower)
Thank you in advance
Ulix
;===================== En français !!
Bonjour a tous !
Je poste dans la section bug a cause de 2 raisons :
- La réponse du compilo, qui ne sont pas (a mon avis) approprier... voir 3ème mon test !
- Difficulté de détecter (avec CompilerIf Defined(test, #PB_Procedure) = #False) les précédent déclarations faite dans le programme principal !
Ici intervient ma proposition (que j'aurais du mettre dans la section : Suggestion et amélioration !
Mais dans la section bug, je suis sûr que Fred y jettera un oeil !
Pour comprendre, ma démarche allez voir là : http://www.purebasic.fr/french/viewtopi ... =1&t=17236
(désoler c'est en français)
Code de test :
; Note : pour tester Commenté/décommenter
;==============
; 1er test : Décommenté le "Declare test()" et décommenté la "Procedure test()" dans le programme principal
; Retour compilo : Rien !
; Retour debug : Module Déclare déjà faite Conforme a l'attente !
; : Module Procedure déja présente Conforme a l'attente !
; Procedure utilisé : La procedure du Programme principal Conforme a l'attente !
;==============
; 2ème test : Commenté le "Declare test()" et décommenté la "Procedure test()" dans le programme principal
; Retour compilo : Rien !
; Retour debug : Module Déclare déjà faite ERREUR : pas conforme a l'attente ! Utilisé une autre constante peut-être ????
; AJOUTER : une nouvelle constante : #PB_Declare pour pouvoir testé l'existance d'une déclaration !!!!
; : Module Procedure déja présente Conforme a l'attente !
; Procedure utilisé : La procedure du Programme principal Conforme a l'attente !
;==============
; 3ème test : Décommenté le "Declare test()"et commenté la "Procedure test()" dans le programme principal
; Retour compilo : Message d'erreur : "The procedure 'test()' has been declared but not defined." Conforme a l'attente !
; A MODIFIER : Que le compilo passe d'abord par le module pour vérifier est exécute : "Ajout : Module Procedure"
; Retour debug : ????
;==============
; 4ème test : Commenté le "Declare test()"et commenté la "Procedure test()" dans le programme principal
; Retour compilo : Message d'erreur : "Ligne xx: test() is not a function, array, list, map or macro." Pas conforme a l'attente !
; Le compilo aurait dù passé par le module est faire le "Declare" et la "Procedure"
; : A MODIFIER : Que le compilo passe d'abord par le module pour vérifier et :
; executer : "Ajout : Module Declare"
; executer : "Ajout : Module Procedure"
; puisqu'il sagit de procedure déclarer dans la section public (accésible depuis l'extérieur du module)
; Retour debug : ????
;==============
; Programme principale
; Ici : Enumeration
; Ici : Structure
; ici : Globale
; Ici : Déclaration
Declare test() ; <===== Commenté/décommenté pour tester le code
; Ici mes includes de mes modules
; XIncludeFile "xxxx... module "
;=============================
DeclareModule Patate
;Toutes les Procedures déclarer ici seront accésible depuis l'extérieure du module !
CompilerIf Defined(test, #PB_Procedure) = #False ; Si Declare"test" est déjà declarer
Debug "Module Déclare déjà faite"
; Ne rien faire
CompilerElse
Debug "Ajout : Module Declare"
Declare test()
CompilerEndIf
EndDeclareModule
Module Patate
CompilerIf Defined(test, #PB_Procedure) = #False ; Si Procedure"test" est présente
Debug "Module Procedure déja présente"
; Ne rien faire
CompilerElse
Debug "Ajout : Module Procedure"
Procedure test()
Debug "Utilise La procedure du Module"
EndProcedure
CompilerEndIf
EndModule
;==========================
UseModule Patate
; Mes procedure du programme principales
; Procedure test()
; Debug "Utilise La procedure du Programme principal" ;<===== Commenté/décommenté la procedure pour tester le code
; EndProcedure
; Lancement du programme
test()
Merci d'avance
Ulix