Macro & Espaces

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Macro & Espaces

Message 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. :(
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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) 
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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, ...)
Image
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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... :)
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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...
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Je suis interessé. As-tu vu le projet de fsw sur le forum anglais?
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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...
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message 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:
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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:
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message 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 ^^
Anonyme

Message 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

@++
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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. :)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Répondre