Saltar al contenido principal
Versión: Siguiente

RESOLVE POINTER

RESOLVE POINTER ( puntero ; nomVar ; numTabla ; numCamp )

ParámetroTipoDescripción
punteroPuntero🡒Puntero del cual recuperar el objeto referenciado
nomVarCadena🡘Nombre de la variable referenciada o cadena vacía
numTablaEntero largo🡘Número de la tabla o del elemento del array referenciado o 0 o -1
numCampEntero largo🡘Número del campo referenciado o 0

Descripción

El comando RESOLVE POINTER recupera la información del objeto referenciado por la expresión de puntero puntero y la devuelve en los parámetros nomVar, numTabla, y numCamp.

Dependiendo de la naturaleza del objeto referenciado, RESOLVE POINTER devuelve los siguientes valores:

Objeto referenciadoParámetros
nomVarnumTablanumCamp
Nada (NIL pointer)"" (cadena vacía)00
VariableNombre de la variable-1-1
ArrayNombre del array-10
Elemento de arrayNombre del arraynúmero del elemento-1
Elemento de array 2DNombre del array 2Dnúmero de la fila del elementonúmero de la columna del elemento
Tabla"" (cadena vacía)número de la tabla0
Campo"" (cadena vacía)número de la tablanúmero del campo

Notas:

• Si el valor que pasa en puntero no es una expresión de tipo puntero, se generará un error de sintaxis.
• El comando RESOLVE POINTER no funciona con punteros a variables locales. De hecho, por definición muchas variables locales con el mismo nombre podrían existir en diferentes lugares, de manera que no es posible para el comando encontrar la variable correcta.

Ejemplo 1

En un formulario, usted crea un grupo de 100 variables editables llamadas v1, v2... v100. Para hacer esto, usted realiza los siguientes pasos:

a. Crea una variable editable que llama v.

b. Define las propiedades del objeto.

c. Asocia el siguiente método al objeto:

 HacerAlgo(Self) // HacerAlgo es un método de proyecto de su base

d. En este punto, puede duplicar la variable tantas veces como sea necesario, o utilizar la funcionalidad Duplicar sobre matriz en el editor de formularios.

e. En el método HacerAlgo, si necesita conocer el índice de la variable para la cual se llama el método, escribe:

 RESOLVE POINTER($1;$vsNomVar;$vlNumTabla;$vlNumCampo)
 $vlNomVar:=Num(Substring($vsNomVar;2))

Note que construyendo su formulario de esta manera, usted escribe los métodos para las 100 variables sólo una vez; no necesita escribir HacerAlgo (1), HacerAlgo (2)...,HacerAlgo (100).

Ejemplo 2

Por propósitos de depuración, necesita verificar que el segundo parámetro ($2) de un método es un puntero a una tabla. Al comienzo de este método, escribe:

  // ...
 If(◊DebugOn)
    RESOLVE POINTER($2;$vsNomVar;$vlNumTabla;$vlNumCampo)
    If(Not(($vlNumTabla>0) & ($vlNumCampo=-1) & ($vsNomVar="")))
  // ATENCIÓN: El puntero no es una referencia a una tabla
       TRACE
       End
    End if
  // ...

Ejemplo 3

Ver el ejemplo del comando DRAG AND DROP PROPERTIES.

Ejemplo 4

Este es un ejemplo de puntero a un array 2D:

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

Ver también

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