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

Sujets variés concernant le développement en PureBasic
freddix
Messages : 101
Inscription : dim. 08/févr./2004 19:37

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

Message 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 :)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

@Score(x) répond parfaitement à la question ... ?
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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))
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 9:48, modifié 1 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

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