Aller au contenu principal
Version: Next

RESOLVE POINTER

RESOLVE POINTER ( pointeur ; nomVar ; numTable ; numChamp )

ParamètreTypeDescription
pointeurPointeur🡒Pointeur duquel récupérer l'objet référencé
nomVarChaîne🡘Nom de la variable référencée ou chaîne vide
numTableEntier long🡘Numéro de la table ou de l'élément de tableau référencé(e) ou 0 ou -1
numChampEntier long🡘Numéro du champ ou de l'élément de tableau 2D référencé ou 0 ou -1

Description

RESOLVE POINTER récupère l'information de l'objet référencé par pointeur et la retourne dans les paramètres nomVar, numTable et numChamp.

Selon la nature de l'objet référencé par le pointeur, RESOLVE POINTER retourne les valeurs suivantes :

Objet référencéParamètres
nomVarnumTablenumChamp
Aucun (pointeur NIL)"" (chaîne vide)00
VariableNom de la variable-1-1
TableauNom du tableau-1-1
Elément de tableauNom du tableaunuméro de l'élément-1
Elément de tableau 2DNom du tableau 2Dnuméro de ligne de l'élémentnuméro de colonne de l'élément
Table"" (chaîne vide)numéro de la table0
Champ"" (chaîne vide)numéro de la tablenuméro du champ

Notes :

  • Si la valeur que vous passez dans le paramètre pointeur n'est pas de type pointeur, une erreur de syntaxe est générée.
  • La commande RESOLVE POINTER ne fonctionne pas avec les pointeurs vers des variables locales. En effet, par définition plusieurs variables locales de même nom pouvant exister à différents emplacements, il n’est pas possible pour la commande de connaître la variable à dépointer.

Exemple 1

Dans un formulaire, vous créez un groupe de 100 variables saisissables qui s'appellent v1, v2... v100. Pour cela, vous procédez de la manière suivante :

  • Vous créez une variable saisissable que vous appelez v.
  • Vous définissez les propriétés de l'objet suivant vos besoins.
  • Vous associez la méthode suivante à l'objet :
 FaireQuelqueChose(Self) // FaireQuelqueChose est une méthode projet de la base
  • Vous pouvez alors soit dupliquer la variable autant de fois que nécessaire, soit utiliser la fonctionnalité Tableau sur la grille de l'éditeur de formulaires.
  • Dans la méthode FaireQuelqueChose, si vous voulez connaître l'indice de la variable pour laquelle la méthode est appelée, vous écrivez le code suivant :
 RESOLVE POINTER($1;$vaNomVar;$vlNumTable;$vlNumChamp)
 $vlVarNum:=Num(Substring($vaNomVar;2))
  • En suivant ces étapes, vous avez écrit une fois seulement les méthodes objet pour les 100 variables : vous n'avez pas eu besoin d'écrire FaireQuelqueChose(1), FaireQuelqueChose(2)..., FaireQuelqueChose(100)).

Exemple 2

Pour des raisons de débogage, vous voulez vérifier si le deuxième paramètre ($2) d'une méthode est un pointeur vers une table. Le début de votre méthode peut être écrit ainsi :

  // ...
 If(<>Débogage)
    RESOLVE POINTER($2;$vaNomVar;$vlNumTable;$vlNumChamp)
    If(Not(($vlNumTable>0)&($vlNumChamp=-1)&($vlNomVar="")))
  // ATTENTION : Le pointeur n'est pas une référence à une table
       TRACE
    End if
 End if
  // ...

Exemple 3

Reportez-vous à l'exemple de la commande _o_DRAG AND DROP PROPERTIES.

Exemple 4

Voici un exemple de pointeur vers un tableau 2D :

 ARRAY TEXT(atCities;100;50)
 var $city : Pointer
 atCities{1}{2}:="Rome"
 atCities{1}{5}:="Paris"
 atCities{2}{6}:="New York"
  // ...autres valeurs
 $city:=->atCities{1}{5}
 RESOLVE POINTER($city;$var;$rowNum;$colNum)
  //$var="atCities"
  //$rowNum="1"
  //$colNum="5"

Voir aussi

_o_DRAG AND DROP PROPERTIES
Field
Get pointer
Is a variable
Is nil pointer
Table