Page 1 sur 3

Macro & Espaces

Publié : ven. 01/sept./2006 9:47
par erix14
Est-ce que quelqu'un a trouvé une astuce pour insérer des espaces dans une macro ?

Code : Tout sélectionner

Macro guillemet
     "
EndMacro
Macro Affiche(M1,M2); j'aimerais avoir au moins un espace entre M1 et M2
     Debug guillemet M1             M2 guillemet
EndMacro

Affiche(ça,colle)
Sinon, va falloir que Fred fasse quelque chose pour la prochaine version. :(

Publié : ven. 01/sept./2006 10:21
par nico
Je suppose que c'est pas ce que tu veux:

Code : Tout sélectionner

Macro guillemet 
     " 
EndMacro 

Macro espace 
     "+"   "+"
EndMacro


Macro Affiche(M1,M2); j'aimerais avoir au moins un espace entre M1 et M2 
     Debug guillemet M1    espace         M2 guillemet 
EndMacro 

Affiche(ça,colle) 

Publié : ven. 01/sept./2006 10:40
par erix14
Non :( car ça rajoute des caractères, dans mon exemple ça marche parce que j'affiche une chaîne avec le debug. Mais si je veux construire du code, ça marche plus. :(
Par exemple :

Code : Tout sélectionner

Macro Action(Fonc,Typ)
     Procedure.Typ Fonc()
EndMacro

Action(Sauter,POINT)
=> Structure not found POINTSauter

Publié : ven. 01/sept./2006 11:13
par Flype
petite bidouille, ca marche avec un caractère '_' précédent le nom de la fonction mais c'est bof, je suis d'accord.

Macro Action(Fonc, Type)
Procedure.Type _Fonc()
EndMacro

Action(Sauter, POINT)

par contre je comprends pas pourquoi tu veux mettre POINT apres 'Procedure.' puisque Procedure/ProcedureReturn ne savent pas retourner une structure, juste des types de bases (.b, .l, ...)

Publié : ven. 01/sept./2006 11:38
par erix14
Merci Flype, je vais adopter ta solution, de toutes façons je n'ai pas le choix. Et dans mon cas, le fait qu'il y ait un petit _ devant la fonction n'a pas d'importance...
Pour les exemples, c'était du n'importe quoi, fait à la va-vite, juste pour montrer le problème... :)

Publié : ven. 01/sept./2006 15:03
par erix14
Bon, voilà sur quoi je travaillais. Je me suis fait une "normalisation" pour travailler en POO avec PureBasic. Voilà à quoi ressemble une Class :

Code : Tout sélectionner

XIncludeFile #PB_Compiler_Home+"Class\MacroSpecialClass.pbi"
;{- Class Personne
Class(Personne);{
     nom.s
     prenom.s
     age.b
     C_(Personne)( nom.s, prenom.s, age.b ) ; Constructeur de la class Personne
     Affiche.s()
     Reset()
EndClass(Personne);}

Constructor(Personne), nom.s, prenom.s, age.b );{
     *This\nom = nom
     *This\prenom = prenom
     *This\age = age 
EndConstructor(Personne);}

Methode(Personne,Affiche,s));{
     ProcedureReturn *This\prenom + " " + *This\nom + " " + Str(*This\age) + " ans"
EndMethode(Personne,Affiche);}

Methode(Personne,Reset));{
     *This\nom = ""
     *This\prenom = ""
     *This\age = 0
EndMethode(Personne,Reset);}
;}
Et voilà un exemple d'utilisation :

Code : Tout sélectionner

XIncludeFile #PB_Compiler_Home+"Class\Personne_Class.pbi"

New(maPersonne, Personne)("Dupond","Jean",43)
; Accès direct aux attributs de l'occurrence en mettant une étoile devant le nom
Debug *maPersonne\prenom
Debug maPersonne\Affiche()
*maPersonne\prenom = "Pierre"
Debug maPersonne\Affiche()
maPersonne\Reset()
Debug maPersonne\Affiche()
Si un ensemble de personnes est intéressé pour étendre cette "normalisation" à l'ensemble du forum, je veux bien partager mon code.
Cela veut dire, une description détaillée en annonce de la rubrique trucs et astuce. Et chaque Class publié dans trucs et astuces devra avoir la mention [Class] au début de son sujet.
Tout le monde devra avoir un répertoire Class dans son répertoire PureBasic, où il mettra ses fichiers Class. Comme ceci, tout le monde pourra publier du code utilisant ces Class sans problème...

Publié : ven. 01/sept./2006 15:16
par Anonyme2
Je suis interessé. As-tu vu le projet de fsw sur le forum anglais?

Publié : ven. 01/sept./2006 15:33
par erix14
A l'instant... il utilise un pré-compilateur, et je crois que les attributs ne sont pas accessibles directement... ma solution est plus simple et plus directe.
Je déteste passer par une fonction pour avoir la valeur d'un attribut, c'est une perte de temps...

Publié : ven. 01/sept./2006 16:22
par Dorian
erix14 a écrit :Si un ensemble de personnes est intéressé pour étendre cette "normalisation" à l'ensemble du forum
Oh oui, sa serai nikel une POO standardisée pour PureBasic, car sa apporte énormement de simplicitée

HS : Je viens de me faire une class en C# pour accéder à une base MySQL distantes par l'intermédiaire d'un script php, et sans POO, celà aurai été très dûr à réaliser. Donc oui de la POO pour Pure :twisted: :lol: :lol:

Publié : ven. 01/sept./2006 16:34
par erix14
Dorian a écrit :HS : Je viens de me faire une class en C# pour accéder à une base MySQL distantes par l'intermédiaire d'un script php, et sans POO, celà aurai été très dûr à réaliser. Donc oui de la POO pour Pure
Entièrement d'accord, en PHP je ne fais que des classes. :wink:

Publié : ven. 01/sept./2006 16:50
par Dorian
erix14 a écrit :Entièrement d'accord, en PHP je ne fais que des classes. :wink:
Moi c'est en C# que je la fait, le code PHP à été récupéré je sais plus où. Je l'ai juste modifier ^^

Publié : ven. 01/sept./2006 17:08
par Anonyme
Moi cela m'intéresse aussi ^^
Cela peut être utile pour moi notament dans le portage des codes c++ en pure.
Si ca voit le jour, je vais devoir revoir l'architecture de mon moteur 3D :D , car j'utilisais les méthodes fournie par LeCyb & Dräc. :D

@++

Publié : ven. 01/sept./2006 17:12
par Dr. Dri
erix14 a écrit :Je déteste passer par une fonction pour avoir la valeur d'un attribut, c'est une perte de temps...
Dans ce cas passe par une macro, transparent pour l'utilisateur sans les inconvénients des fonctions (ca doit pouvoir se bidouiller nan ?)

Dri

Publié : ven. 01/sept./2006 18:01
par erix14
Dr.Dri a écrit :Dans ce cas passe par une macro, transparent pour l'utilisateur sans les inconvénients des fonctions (ca doit pouvoir se bidouiller nan ?)
Je parlais non seulement du temps à coder ses fonctions : GetX(), SetX(val), GetY(), SetY(val), etc. Mais aussi, de l'énorme baisse de performance que cela implique... Surtout pour des applications 3D. :)

Publié : ven. 01/sept./2006 18:12
par Dr. Dri
ce qui existe dans certains langages, ce sont les fonctions "inline"
ca fonctionne comme une macro, avec la syntaxe d'une fonction (pour les appels)

ca serait pas mal en pure...

Dri