Page 1 sur 1

connaitre l'adresse mémoire d'un String...

Publié : dim. 13/juin/2004 20:43
par freddix
J'ai par exemple mon tableau :
Scores$( 32 )

J'aimerais connaitre l'adresse de mon texte contenu dans Scores$( X ) par exemple ...

Comment puis je faire pour avoir le pointeur vers ce string ?

Merci :)

Publié : dim. 13/juin/2004 20:46
par fweil
@Score(x) répond parfaitement à la question ... ?

Publié : dim. 13/juin/2004 22:27
par nico

Code : Tout sélectionner

;Un tableau de chaine$ de caractères contient en fait 
;un tableau d'adresses qui pointent à leur tour
;vers le premier octet de la chaine de caractère.
;Ce qui explique que dans une stucture, la longueur
;d'une Chaine vaut 4 Octets.
;C'est exactement comme si un pointeur contenait 
;la variable d'un autre pointeur.

Dim Scores$(32) 

Scores$(10)="freddix"

*pointeur=@Scores$()          ;adresse du premier octet
*pointeur=*pointeur+4*10      ;adresse de la 10 ème valeur (4*10)
                              ;puisqu'une adresse est contenue sur 4 octets

Debug (PeekL(*pointeur))      ;PeekL(*pointeur)donne l'adresse réel du début
                              ;de la chaine

Debug PeekS(PeekL(*pointeur)) ;PeekS permet de lire la chaine à l'adresse
                              ;indiquée

;Ce qui donne
Debug PeekS(PeekL(@Scores$()+10*4))

Publié : lun. 14/juin/2004 7:36
par Dr. Dri
...

Publié : lun. 14/juin/2004 13:07
par nico
J'éprouve quelques difficultés avec JaPBe, certains codes ne fonctionnent pas (3.90), j'attends un peu avant de mettre à jour.


Je vois mon erreur maintenant:

Debug PeekS(@Scores$(10)) ;fonctionne très bien (je sais pas ce que j'ai fait), néanmoins ce que j'ai écrit reste valable.

Sinon, je préfère garder l'@ pour garder une logique de lecture, de même pour les API, ça permet de différencier les entrées des sorties, là aussi on pourrait omettre l'@, mais j'ai pris l'habitude de les mettre, plus pratique, en tout cas pour moi.