[Non Résolu] Création d'une variable par des arguments
[Non Résolu] Création d'une variable par des arguments
Bonjour, ou bonsoir ou bon appétit.
Le titre est peut-être pas très explicite. J'explique mon problème :
Je veux faire une procédure qui créé une variable selon un argument de cette procédure.
Avec procedure(nombre) par exemple, comment faire pour que je puisse avoir variable qui s'appelle si le nombre est 3, variable3 ?
J'espère avoir été compris.
Cordialement,
Robrock55
Le titre est peut-être pas très explicite. J'explique mon problème :
Je veux faire une procédure qui créé une variable selon un argument de cette procédure.
Avec procedure(nombre) par exemple, comment faire pour que je puisse avoir variable qui s'appelle si le nombre est 3, variable3 ?
J'espère avoir été compris.
Cordialement,
Robrock55
Dernière modification par Robrock55 le sam. 18/févr./2012 21:46, modifié 2 fois.
Re: Création d'une variable par des arguments
ça ?
Code : Tout sélectionner
Procedure.s SetNumVariable(NumVariable.i)
ProcedureReturn "variable"+Str(NumVariable)
EndProcedure
Debug SetNumVariable(58)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Création d'une variable par des arguments
Et pour intéragir avec cette variable ?
Re: Création d'une variable par des arguments
Je ne comprends pas ce que tu veux dire ?Robrock55 a écrit :Et pour intéragir avec cette variable ?
ça ?
Code : Tout sélectionner
Procedure.s SetNumVariable(NumVariable.i)
Shared MaVariable.s
MaVariable = "variable"+Str(NumVariable)
ProcedureReturn MaVariable
EndProcedure
M.s = SetNumVariable(58)
Debug M
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Création d'une variable par des arguments
Code : Tout sélectionner
NewMap monVars()
Procedure.s CreateNumVariable(NumVariable.i)
Shared monVars()
If Not FindMapElement(monVars(), "variable" + Str(NumVariable))
AddMapElement(monVars(), "variable" + Str(NumVariable))
EndIf
ProcedureReturn MapKey(monVars())
EndProcedure
Define.s a, b, c
a = CreateNumVariable(58)
b = CreateNumVariable(23)
Debug a ;variable58
Debug b ;variable23
monVars(a) = 3
monVars(b) = 12
Debug a + " = " + Str(monVars(a)) ;3
monVars(a) + 5
Debug a + " = " + Str(monVars(a)) ;8
monVars(a) = monVars(a) + monVars(b)
Debug a + " = " + Str(monVars(a)) ;20
Debug b + " = " + Str(monVars(b)) ;12
c = b
Debug c ;variable23
Debug c + " = " + Str(monVars(c)) ;12

Vous pouvez également utiliser un tableau:
Code : Tout sélectionner
Dim monVars(100)
Define.i a, b, c ;indice
a = 58
b = 23
Debug a ;58 ;indice
Debug b ;23 ;indice
monVars(a) = 3
monVars(b) = 12
Debug "var" + Str(a) + " = " + Str(monVars(a)) ;3
monVars(a) + 5
Debug "var" + Str(a) + " = " + Str(monVars(a)) ;8
monVars(a) = monVars(a) + monVars(b)
Debug "var" + Str(a) + " = " + Str(monVars(a)) ;20
Debug "var" + Str(b) + " = " + Str(monVars(b)) ;12
c = b
Debug c ;23 ;indice
Debug "var" + Str(c) + " = " + Str(monVars(c)) ;12
Re: Création d'une variable par des arguments
Je dois avouer que cette question est très intéressante
Moi je serais passer par un fichier texte !
Mais ceci est très utile pour crée sa propre variable (Nom + Valeur)
Ce sujet est a développer car très intéressant

Moi je serais passer par un fichier texte !

Mais ceci est très utile pour crée sa propre variable (Nom + Valeur)
Ce sujet est a développer car très intéressant

La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php
Re: Création d'une variable par des arguments
Oui, les variables n'existe plus une fois le programme compilé , tu peut néanmoins passer par les macros :J'espère avoir été compris.
Code : Tout sélectionner
Macro set(num)
Variable#num.i
EndMacro
set(3) = 255
Debug Variable3
Variable3 = 55
Re: Création d'une variable par des arguments
Pas mal G-Rom
Comment tu fait pour faire la même chose mais pour crée une variable texte ?

Comment tu fait pour faire la même chose mais pour crée une variable texte ?
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php
Re: Création d'une variable par des arguments
au lieu de .i tu met .s 

Re: Création d'une variable par des arguments
Ah oui !!!
Pourtant j'ai essayer des truc comme ça et j'y suis pas arriver
mais tu as raison, et ça marche, merci
Comment quoi j'ai du me compliquer la vie
Pourtant j'ai essayer des truc comme ça et j'y suis pas arriver

mais tu as raison, et ça marche, merci

Comment quoi j'ai du me compliquer la vie

Code : Tout sélectionner
Macro set(num)
Variable#num.s
EndMacro
set(e) = "255"
Debug Variablee
Variablee = "55"
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php
Re: Création d'une variable par des arguments
G-Rom, c'est exactement ce que je cherchais. Merci beaucoup, ca fait 2 fois que tu m'apportes une grande aide, vraiment, merci beaucoup 

Re: [Non Résolu] Création d'une variable par des arguments
Euh en fait ca ne marche pas réellement comme je le souhaite.
La macro marche nickelle, mais en fait quand je l'utilise je connais pas la valeur de num.
Si vous pouviez me donner la technique si elle existe, je vous en serez reconnaissant.
J'avais essayer de passer par le retour d'une procédure de cette manière :
Et là PAF la mega erreur
La macro marche nickelle, mais en fait quand je l'utilise je connais pas la valeur de num.
Code : Tout sélectionner
Macro set(num)
variable#num
EndMacro
i = 1
set(i) = 3
;Donneras variablei = 3 et non variable1 = 3 comme je le voudrais.
J'avais essayer de passer par le retour d'une procédure de cette manière :
Code : Tout sélectionner
Macro set(num)
variable#num
EndMacro
Procedure value(num)
ProcedureReturn num
EndProcedure
i=1
set(value(i)) = 3
Re: [Non Résolu] Création d'une variable par des arguments
en fait je lis ce que tu ecris depuis le début , et je pense que tu fait fausse route quelque part
comme souvent,pour les problèmes qui semblent insoluble,
le vrais soucis viens de la façon de poser le probleme !
en clair l'énoncé est déja le probleme !
alors , pourquoi veut tu des variables differente ?
en basic une variable qui porte le meme nom mais qui a une case mémoire differente
s'appelle une variable indicé (un tableau)
exemple :
comme tu peux le voir la variable toto(1) est différente de toto(3)
dans le meme genre tu as aussi l'emploi des structures ..
l'avantage tu peux mélanger les genres ( chaine et numérique )
bref tu peux t'en sortir , avec pleins de solution que d'employer des bidouilles innommable
autre exemple avec un tableau :
comme souvent,pour les problèmes qui semblent insoluble,
le vrais soucis viens de la façon de poser le probleme !
en clair l'énoncé est déja le probleme !
alors , pourquoi veut tu des variables differente ?
en basic une variable qui porte le meme nom mais qui a une case mémoire differente
s'appelle une variable indicé (un tableau)
exemple :
Code : Tout sélectionner
dim toto(10)
toto(1)=56
toto(3)= 89
toto( 8 ) = 456
debug toto(1)
debug toto(3)
debug toto(8)
dans le meme genre tu as aussi l'emploi des structures ..
Code : Tout sélectionner
structure toto
a.l
b.l
c.l
chaine.s
endstructure
toto.toto
toto\a=15
toto\b=5
toto\c=456
toto\chaine.s=" coucou "
debug toto\a
debug toto\b
debug toto\c
debug toto\chaine
bref tu peux t'en sortir , avec pleins de solution que d'employer des bidouilles innommable

autre exemple avec un tableau :
Code : Tout sélectionner
global dim roro(100)
procedure titi (argument , valeur)
roro(argument)=valeur
endprocedure
titi (20,150 ) ; on attribut la valeur 150 a la variable roro(20) " roro20 "
debug roro(20)
; mais on aurai pu faire directement sans passer par une procedure
roro(20)=190 ; c'est comme si j'avais ecris roro20=190
debug roro(20)
Re: [Non Résolu] Création d'une variable par des arguments
Bon je repose mon problème autrement. Je suis toujours dans la progra de mon jeu en "fausse POO Purebasic" (pendez le !)
Et donc là j'en suis à la sauvegarde d'un niveau.
J'ai choisis de l'enregistrer dans un fichier tel que :
Mon code actuel :
Et donc je souhaite créer une planète tel que *planet1 puis *planet2 etc...
Et donc là j'en suis à la sauvegarde d'un niveau.
J'ai choisis de l'enregistrer dans un fichier tel que :
- Un byte indiquant le nombre de planètes
- La position X de la 1ere planète
- La position Y de la 1ere planète
- Les unités de la 1ere planète
- ... (les autres attributs de cette planète)
- La position X de la 2eme planète
- La position Y de la 2eme planète
- ...
Mon code actuel :
Code : Tout sélectionner
;=======================
;=== Bubble Army PC ====
;=== Robrock55 =========
;=== read_level().pb ===
;=======================
Procedure read_level(level.s,*faction1,*faction2,*faction3,*faction4)
i = 1 ;variable pour le for/To
;variables de sotckages provisoires
posX.l = 0
posY.l = 0
size.b = 0
units.w = 0
faction.b = 0
*faction.Class_Faction = 0
planetsNumber.b = 0
#FILE_ID = 0
ReadFile(#FILE_ID,level)
planetsNumber = ReadByte(#FILE_ID)
For i = 1 To planetsNumber
posX = ReadLong(#FILE_ID)
posY = ReadLong(#FILE_ID)
size = ReadByte(#FILE_ID)
units = ReadWord(#FILE_ID)
faction = ReadByte(#FILE_ID)
Select faction
Case 1
*faction = *faction1
Case 2
*faction = *faction2
Case 3
*faction = *faction3
Case 4
*faction = *faction4
EndSelect
;-CONSTRUCTEUR QUI NE FONCTIONNE PAS, LE PROBLEME SE SITUE ICI
Global set_pointer_planet(i).Class_Planet = New_Class_Planet(units,posX,posY,size,*faction)
Next
ProcedureReturn 1
EndProcedure
Re: [Non Résolu] Création d'une variable par des arguments
Une simple liste chainee fait l'affaire 
