VARPTR |
Pointeur de variable |
---|---|
Basic Couleur étendu (Extended Color Basic) | Basic du Coco 2 |
Syntaxe
numericvariable = VARPTR(variablename) |
Paramètres
Nom | Description |
---|---|
variablename | Ce paramètre permet de faire référence à n'importe quelle variable légales, y compris les variables de chaîne de caractères et numériques, de type simple ou tableau. |
Description
Cette fonction permet d'indiquer l'emplacement en mémoire d'une variable ou d'un bloc de tampon fichier.
Remarques
- La fonction VARPTR renvoie une adresse de 2 octets représentant un pointeur vers le bloc de mémoire de 5 octets affecté au nom de variable. Le contenu réel du bloc mémoire variera selon le type et la nature de la variable.
- La valeur renvoyée à la suite d'une commande VARPTR pointe toujours vers un bloc de mémoire de 5 octets occupé par la variable spécifiée. Si la variable est numérique (qu'elle soit simple ou tableau), alors le bloc contient la valeur réelle de la variable, au format à virgule flottante, où l'octet #0 représente l'exposant et les octets #1 à #4 représentent la mantisse. D'un autre côté, si la variable était une variable chaîne de caractères (encore une fois, elle peut être simple ou tableau), alors le bloc représente en fait un descripteur pour la chaîne de caractères. Dans ce cas, l'octet #0 du bloc spécifie la longueur de la chaîne de caractères et les octets 2 et 3 contiennent l'adresse du premier caractère de la chaîne de caractères. Dans ce descripteur, les octets 1 et 4 ne sont pas utilisés.
- Chaque variable comprend également un court bloc d'entête contenant le nom de la variable et d'autres informations pertinentes. Dans le cas des variables simples, l'entête est toujours long de 2 octets (il ne contient que le nom de la variable) et précède immédiatement le bloc de données de 5 octets en mémoire. Dans le cas des variables de tableau, cependant, le bloc d'entête est assez différent - sa longueur sera toujours de 5 octets plus 2 octets pour chaque dimension - et il est situé juste avant le bloc de données de 5 octets pour l'élément le plus petit dans le tableau.
- La fonction VARPTR est particulièrement utile pour passer une adresse de variable à une fonction USR. Le sous-programme peut alors accéder à n'importe quelle partie de la variable et modifier les données si nécessaire.
- Une chose à savoir lors de l'utilisation de cette fonction est que l'introduction d'une nouvelle variable simple provoque le déplacement des variables du tableau vers le haut en mémoire. Cela peut avoir de sérieuses ramifications lorsqu'une instruction VARPTR est utilisée pour obtenir l'adresse d'une variable de tableau. Considérez l'exemple suivant :
- Ceci est une déclaration parfaitement acceptable et fonctionnera correctement tant que A a été défini précédemment. Si A n'a pas été défini, cependant, la valeur renvoyée sera de 7 octets inférieure à l'emplacement réel de A$(0). C'est parce que l'adresse a été calculée en premier, puis la variable de tableau a dû être déplacée vers le haut dans la mémoire pour faire de la place à la variable simple. Notez que ce problème ne se produit pas si vous obtenez le pointeur pour une variable simple. De toute évidence, la solution consiste à s'assurer que toutes les variables sont dimensionnées ou que vous définissez la variable avant de l'utiliser pour maintenir le pointeur de variable vers une variable de tableau. L'approche suivante fonctionnera toujours correctement :
A = VARPTR(A$(0))
A = 0: A = VARPTR(A$(0))
Exemples
Voici des exemples typiques d'utilisation de la fonction VARPTR :
A = VARPTR (B$)
A = VARPTR (B$ C0, 0))
A$ = HEX$(VARPTR(B$))
Dernière mise à jour : Mercredi, le 11 Août 2021