Remplacement de "Global" par une Structure de poin

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Remplacement de "Global" par une Structure de poin

Message 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
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Re: Remplacement de "Global" par une Structure de

Message 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 ?
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Remplacement de "Global" par une Structure de

Message 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 ....
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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]
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

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