passer des globals en parametres de procedure

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

passer des globals en parametres de procedure

Message par Backup »

ben oui , je comprend pas pourquoi on peut pas le faire !!!

etre obliger de faire une copie des variable global que l'on veut passer en parametre d'une procedure , fait perdre du temps , et ç'est ennervant a la fin
les alertes "on peut pas faire ceci ou cela" ....

pourquoi on pourrai pas d'abord ??

1-je demande la possibilité de le faire
2-je demande les variables dans le Step
3- apres je dit " s'il te plait Fred!! "


:D
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Je suis d'accord avec Dobro, je me suis pris la tête la dessus toute une après-midi. Et après ca fait trop de variables... Donc on veut (on demande pas :mrgreen:) des viarables en paramêtres de fonction qui puissent êtres des variables globales ! :) (Je récapitule pour les neuneus :0: glissant: :jesors: )
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: passer des globals en parametres de procedure

Message par comtois »

Dobro a écrit :etre obliger de faire une copie des variable global que l'on veut passer en parametre d'une procedure , fait perdre du temps
Pourquoi vouloir passer en paramètre une variable globale ? elle est déjà acccessible dans la procédure sans la mettre en paramètre .

Ou alors tu penses à un truc particulier ? tu peux me faire un exemple que je comprenne mieux ?
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Je vais t'expliquer avec un exemple a moi, Comtois, c'est tout simple ;) J'vais fait ubn bout de code utilisant une variable nommée cmd$. Je me suis rendu compte qu'une partie de ce code pouvait être réduit en procédure. J'ai donc créé la procedure (copier/coller, puis entête et pied). Le problème c'est que cm$ était déclarée en tant que gloable (puisque utilsée dans d'autres procédures qui auraient eu 15000 arguments si j'avais encore mis ca !). Et je n'avais pas envie de changer le nom de l'argument (ce que j'ai quand même fait), car changer une variable dans 3 lignes simples ca va.... Mais dans 50 complexes ? Un bug arrive très vite. Donc maintenant j'espère que tu as mieux compris
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

@Heis

Ca n'explique rien, ce que tu dis là. (Ou alors j'ai pas compris :wink: )

Si la variable est globale, elle est donc accessible depuis l'intérieur de la procédure, et tu n'as pas besoin de la passer en paramètres.

Et si tu n'as que cette variable à passer, ben tu fais une procédure sans paramètres, et ça fonctionne pareil.

Chris :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ce a quoi je rajoute :

avoir une variable qui debarque de n'importe ou au millieu de ta procedure
c'est simplement pas clair ... surtout lorsque tu a beaucoup de variable..

alors que le passage du contenu de cette variable global a la procedure en utilisant la technique de base les parentheses , permet ensuite de mettre a jour eventuelement des variables locales avec une valeur de l'exterieur globale , et aussi respecte le principe d'une procedure qui est de recuperer les valeurs par les parentheses !!

alors que la , (je vais comparer le procedure a une boite de vote!! :) )

si globalement les gens(variable) vote (glisse leur valeurs) en utilisant le trou du dessus de la boite (les parantheses)

c'est controlable et clair n'est-ce pas ?

alors qu'actuelement ont force les gens appellé "global" a faire entrer leur bulletin de vote(leur valeur) en forcant le fond de la boite !!

je trouve pas ça democratique moi !! :lol:

et on si perd vite .. bref c'est pas clean :)

et je ne vois rien qui justifi que l'on ne puisse le faire
puisque un parametre est une valeur exterieur a la procedure
que cette valeur soit une constante, ou une variable globale ne change rien

ha ben oui tien je veux aussi pouvoir passer des constantes en parametre
(rien que pour embeter) :lol:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

si je te comprends bien dobro c'est ça que tu veux faire ?

Code : Tout sélectionner

#MaConstante = 3
Global b.l
b= 2

Procedure toto(a.l,c.l)
  ProcedureReturn a + c
EndProcedure


Debug toto(b,#MaConstante)
Je passe le contenu de la variable globale b à la procédure , et ça fonctionne , je ne comprends toujours pas ton problème .
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

t'es un malin toi tu execute une copie l'air de rien en utilisant 2 variables de plus (a et c), que dans un language plus "propre" il aurai fallu declarer !! :)

apres tout pourquoi chercher a creer des noms de variable differente (a et c) qui prennent de la memoire , pour les parametres alors qu'elles existent ces variables (b,#MaConstante) ????

moi je veux pouvoir faire ça c'est plus clair !!!

Code : Tout sélectionner

 #MaConstante = 3
Global b
b= 2.5

Procedure toto(b,#MaConstante)
for t=1 to 200 step b ;<====== ça aussi je veux !!!
    ProcedureReturn b + #MaConstante+t
next t
EndProcedure


Debug toto(b,#MaConstante)




Répondre