Page 1 sur 1

Remplacement de "Global" par une Structure de poin

Publié : ven. 16/mars/2007 18:13
par Thyphoon
lorsque j'avais demandé comment vous structuriez vos programmes beaucoup mon repondu (merci a eux d'ailleur), et un certain nombre ont annoncé qu'ils n'utilisaient jamais les variable Global.(Si quelqu'un pouvait m'expliquer pourquoi !?!?) bref c'est ce que je tante de faire. or le problème c'est quand on commence a avoir un certain nombre de Liste chainé, tableau etc... ça fait beaucoup de pointeur a passer dans une procédure.
Je sais pas si mon idée est bonne mais je pensais faire une structure qui contiendrait tout les pointeurs de chaque list et tableau que j'utiliserais ainsi je n'aurais qu'a passer ma variable contenant tout les pointeurs...
voici un exemple (qui ne fonctionne pas)

Code : Tout sélectionner

Structure histoirede
 varA.l
 varB.l
 varC.s
 EndStructure
NewList MalisteA.histoirede()
Dim MonTableauB.s(100)
Structure EnvStructure
 *MalisteA
 *MonTableauB
  autrevariable.l
EndStructure

Define Env.EnvStructure

Env\*MalisteA()=@MalisteA()
Env\*MonTableauB()=@MonTableauB()

Procedure test(*Env.EnvStructure)
  ;je veux rajouter un element a MalisteA()
  AddElement(*Env\MalisteA())
 ; je veux modifier une element du tableau
 *Env\MonTableauB(50)="coucou"
EndProcedure

Est ce que c'est une bonne idée ou pas ? Ou bien c'est de la torture mental et les variable global c'est fait pour ça ?
>Merci d'avance

Thy

Re: Remplacement de "Global" par une Structure de

Publié : ven. 16/mars/2007 18:19
par minirop
Thyphoon a écrit :et un certain nombre ont annoncé qu'ils n'utilisaient jamais les variable Global.(Si quelqu'un pouvait m'expliquer pourquoi !?!?)
faudrait qu'ils disent comment il font car en PB il n'y a pas de fonction main() donc obligatoirement des vairables déclarés.
Est ce que c'est parce qu'ils mettent leurs fonctions avant leurs variables et passent les variables en pointeru ?

Re: Remplacement de "Global" par une Structure de

Publié : ven. 16/mars/2007 18:27
par Thyphoon
minirop a écrit : faudrait qu'ils disent comment il font car en PB il n'y a pas de fonction main() donc obligatoirement des vairables déclarés.
Est ce que c'est parce qu'ils mettent leurs fonctions avant leurs variables et passent les variables en pointeru ?
ils en parlent ici
http://www.purebasic.fr/french/viewtopic.php?t=6375

Et apparement oui ils passent toutes les variables en pointeur.... J'essaye de comprendre pourquoi et comment... Mais bon ....

Publié : ven. 16/mars/2007 18:36
par minirop
suffit de ne pas faire :

Code : Tout sélectionner

global a.l
a = 2
Procedure truc()
a = a*2
EndProcedure
ni :

Code : Tout sélectionner

a.l = 2
Procedure truc()
shared a
a = a*2
EndProcedure
mais :

Code : Tout sélectionner

a = 2
Procedure truc(*a.l)
a = a*2
EndProcedure
truc(@a)
[/code]

Publié : ven. 16/mars/2007 18:42
par Thyphoon
minirop a écrit :suffit de ne pas faire :
oui ça je suis d'accord mais quand tu commence avoir beaucoup de variable Global et que tu dois les passer par pointeur ça devient vachement lourd et je crois qu'il y a une limitation au nombre de parametre d'une procedure. D'où ma question de depart et de faire une structure qui contient le pointeur de toute les variable dite Global ! tu vois ce que je veux ?