Page 1 sur 1

[RESOLU] procedure et pointeurs, aie aie aie

Publié : mer. 25/juil./2012 20:29
par supercdfr
Bonjour,

j'essaye un truc simple avec des pointeurs, mais j'arrive a rien.

Voici le code que je teste :

Code : Tout sélectionner

test.l = 5

Procedure rajoute_deux(*valeur)
  *valeur += 2
EndProcedure

rajoute_deux(@test)

Debug test
Ce que j’espérais naïvement, c'est :
- ma valeur test est a 5
- je lance la procédure rajoute_deux avec l'adresse mémoire de test
- je rajoute 2 a la valeur du pointeur
- en ressortant, test a pour valeur 7 et plus 5 :twisted: .

Problème, test reste a 5.

Comment je fais pour avoir ma valeur test a 7 (le passage par pointeur me permettrait de réduire une procedure de 100 lignes a 30).

Re: procedure et pointeurs, aie aie aie

Publié : mer. 25/juil./2012 20:45
par comtois
comme ça

Code : Tout sélectionner

test.l = 5

Procedure rajoute_deux(*valeur.long)
  *valeur\l + 2
EndProcedure

rajoute_deux(@test)

Debug test
ou

Code : Tout sélectionner

test.l = 5

Procedure rajoute_deux(*valeur)
  PokeL(*valeur, PeekL(*valeur) + 2)
EndProcedure

rajoute_deux(@test)

Debug test

procedure et pointeurs, aie aie aie

Publié : mer. 25/juil./2012 20:48
par wood51
*valeur\l + 2

On en apprend tout les jours ... :)
Merci

Re: procedure et pointeurs, aie aie aie

Publié : jeu. 26/juil./2012 8:08
par supercdfr
moi qui cherchait bêtement avec les * ou @.

Merci énormément.

Re: procedure et pointeurs, aie aie aie

Publié : jeu. 26/juil./2012 11:42
par Backup
supercdfr a écrit :moi qui cherchait bêtement avec les * ou @.

Merci énormément.
oui ça marche aussi ;) ... c'est plus scolaire ... :)

Code : Tout sélectionner

Declare  rajoute_deux(variable_adress.i)

test.i = 5
rajoute_deux(@test) ; ici on passe l'adresse de la variable "test.i"
Debug test

; ******* zone procedure *******************
Procedure rajoute_deux(variable_adress.i)
	valeur.i=peekl(variable_adress.i) ; recupere la valeur (le contenu) de la variable test.l, et la met dans la variable locale "valeur.i"
	pokei(variable_adress.i, valeur.i+ 2) ; pose la nouvelle valeur (valeur+2) a l'adresse passé en parametre (donc dans la varable "test.i")
EndProcedure
; EPB