Page 1 sur 1
'CompileIf Defined(Nom,Type)' plus poussé
Publié : sam. 11/mars/2006 16:31
par Lna
Bonjour,
'CompileIF Defined(Nom,Type)' manque de détails.
Ce serait bien de pouvoir pousser l'analyse jusqu'au type de variable que l'on souhaite autoriser ou non. (un paramètre facultatif)
En plus de #PB_Constant et #PB_Variable, avoir un #PB_Numérique et un #PB_Chaine même en Anglais serait bienvenue pour le futur.
Merci.
A +
Publié : dim. 16/juil./2006 10:35
par Anonyme2
Une autre demande, lorsque l'on veut compiler plusieurs constantes ou variables ou autre, il faut mettre un compilerif avec un defined pour chaque élément, on pourrait avoir une seule commande qui prend en compte chaque élément d'un bloc d'énumération et complile chaque élément s'il n'est pas défini par exemple (je dit bien que chaque élément est traité individuellement)
Code : Tout sélectionner
CompilerIf Defined(Constante1, #PB_Constant) = #False
#Constante1 = 10
CompilerEndIf
CompilerIf Defined(Constante2, #PB_Constant) = #False
#Constante2 = 20
CompilerEndIf
CompilerIf Defined(Constante3, #PB_Constant) = #False
#Constante3 = 30
CompilerEndIf
CompilerIf Defined(Constante4, #PB_Constant) = #False
#Constante4 = 40
CompilerEndIf
CompilerIf Defined(Constante5, #PB_Constant) = #False
#Constante5 = 50
CompilerEndIf
CompilerIf Defined(Constante6, #PB_Constant) = #False
#Constante6 = 60
CompilerEndIf
à remplacer par quelque chose comme ça
Code : Tout sélectionner
CompilerIf Defined(EnumerationBlock, #PB_Constant) = #False
#Constante1 = 10
#Constante2 = 20
#Constante3 = 30
#Constante4 = 40
#Constante5 = 50
#Constante6 = 60
CompilerEndIf
Publié : dim. 16/juil./2006 11:48
par Flype
purebasic autorise déjà définir plus fois les constantes.
sinon avec les macros on peut faire des choses intéressantes.
mais pour ta demande, lna, il n'y a pas de solution autre que Fred...
ex :
Code : Tout sélectionner
Macro DefineConstant(x, y)
CompilerIf Defined(x, #PB_Constant) = #False
#x = y
CompilerEndIf
EndMacro
DefineConstant(Constante1, 10)
DefineConstant(Constante1, 10)
DefineConstant(Constante1, 10)
DefineConstant(Constante1, 10)
DefineConstant(Constante2, 20)
DefineConstant(Constante3, 30)
DefineConstant(Constante4, 40)
DefineConstant(Constante5, 50)
DefineConstant(Constante6, 60)
Enumeration 1
#PB_Gadget_FrontColor
#PB_Gadget_BackColor
#PB_Gadget_LineColor
#PB_Gadget_TitleFrontColor
#PB_Gadget_TitleBackColor
#PB_Gadget_GrayTextColor
EndEnumeration
Enumeration 1
#PB_Gadget_FrontColor
#PB_Gadget_BackColor
#PB_Gadget_LineColor
#PB_Gadget_TitleFrontColor
#PB_Gadget_TitleBackColor
#PB_Gadget_GrayTextColor
EndEnumeration
Debug #PB_Gadget_LineColor
Debug #Constante4
Publié : dim. 16/juil./2006 19:23
par Anonyme2
Merci Flype pour le bout de code
C'est dommage de devoir écrire des macros pour ce qui n'est que des directives de compilation.
J'ai mis un exemple avec des constantes mais mon vrai problème c'est les structures, mais c'était plus simple un exemple avec des constantes