Page 1 sur 2

Indirection

Publié : ven. 29/oct./2010 10:45
par Parole De JOJO
Existe-il un moyen de manipuler une variable dont on ne connait pas le nom?
Exemple:

Code : Tout sélectionner

Procedure test(variable.s,valeur.l)
#(variable)=valeur ; la valeur stoke dans "variable" deviens une variable.
EndProcedure
test("a",18)  ; et la je veux que "a" prenne la valeur 18
j'avais dans le temps une machine TI-89, et ca marchait avec le signe #, qui refairait a une autre variable. Cela existe-il sur purebasic?

Re: Indirection

Publié : ven. 29/oct./2010 10:45
par Progi1984
Ptet à voir du côté des Maps.

Re: Indirection

Publié : ven. 29/oct./2010 11:00
par Parole De JOJO
non ce n'est pas du tout cela, j'ai essaye

Re: Indirection

Publié : ven. 29/oct./2010 11:14
par gnozal
Ce n'est pas possible.
Purebasic n'est pas un interpréteur, le nom d'une variable n'a plus de signification une fois le programme compilé (hors débogage).

Re: Indirection

Publié : ven. 29/oct./2010 11:22
par Parole De JOJO
c'est vrai, j'y ais pas pense
il n'y a donc pas de solution?
la verite est que je viends de revoir map et peut etre que je pourrais changer un peu mon code et l'y adapter

Re: Indirection

Publié : ven. 29/oct./2010 11:24
par Fred
une map avec les addresses des variables devrait faire l'affaire, mais il faudra que la variable soit déjà definie à compilation (car Purebasic est un language compilé)

Re: Indirection

Publié : ven. 29/oct./2010 12:05
par Parole De JOJO
ok je vais essayer
merci bcp

Re: Indirection

Publié : ven. 29/oct./2010 12:16
par Backup
ce que tu veux faire , c'est en fait ce qu'on fait lorsqu'on ecrit un interpreteur

va voir ici, la partie qui traite des variables
http://michel.dobro.free.fr/forum_phpbb ... p=426#p426

Re: Indirection

Publié : ven. 29/oct./2010 12:29
par flaith
Le sujet demandé n’existe pas.
:mrgreen:

Re: Indirection

Publié : ven. 29/oct./2010 12:39
par Backup
Merci Flaith
lien corrigé ;)

grosso modo
pour simuler une variable, il faut utiliser une structure !!




Structure variable
        nom.s
        valeur.s
EndStructure
Global Dim var.variable(0)


Procedure test(nom.s,valeur)
        var(0)\nom.s=nom.s
        var(0)\valeur.s= str (valeur)
EndProcedure

test( "a" ,18 )


Debug "la variable :" +var(0)\nom.s+ " contient la valeur : " +var(0)\valeur.s
et voici comment on affecte 10 variables, avec une valeur aleatoire


Declare test(nom.s,valeur,index)

Structure variable
        nom.s
        valeur.s
EndStructure
Global Dim var.variable(9) ; pour 10 variable


; on va attribuer des valeurs et des noms de variables au pif
; pour 10 variables

For index=0 To 9
        nom_variable$= chr (index+65)
        valeur_au_pif= random (100)+1
        test(nom_variable$,valeur_au_pif,index)
Next index


; on va afficher le contenue de nos variables
For i=0 To 9
Debug "la variable :" +var(i)\nom.s+ " contient la valeur : " +var(i)\valeur.s
Next i


Procedure test(nom.s,valeur,index)
        var(index)\nom.s=nom.s
        var(index)\valeur.s= str (valeur)
EndProcedure

Re: Indirection

Publié : ven. 29/oct./2010 13:04
par Backup
...

Re: Indirection

Publié : ven. 29/oct./2010 13:26
par Parole De JOJO
dobro, comment je m'inscris sur ton site?

Re: Indirection

Publié : ven. 29/oct./2010 13:39
par Fred
Avec une map c'est beaucoup plus simple et plus rapide à l'execution qu'en utilisant un tableau ;). Code non testé:

Code : Tout sélectionner

OpenConsole()

NewMap Variables.l()
Variables("age") = 10
Variables("taille") = 20

Variable$ = Input()
If FindMapElement(Variables(), Variable$)
  Debug "Variable: "+Variable$+" trouvée: "+Str(Variable())
EndIf

Re: Indirection

Publié : ven. 29/oct./2010 14:05
par Backup
pfff! frimeur ! :roll: :)

ça m'fais penser qu'avec les map, je pourrai arranger un peu mon PureGolo :)

Re: Indirection

Publié : ven. 29/oct./2010 15:40
par flaith
Dobro a écrit :Merci Flaith
lien corrigé ;)
De rien m'sieur :) sauf que maintenant j'ai ca
Vous n’êtes pas autorisé à lire ce forum.
:oops: