4D v16.3

RESOLVE POINTER

Inicio

 
4D v16.3
RESOLVE POINTER

RESOLVE POINTER 


 

RESOLVE POINTER ( puntero ; nomVar ; numTabla ; numCamp ) 
Parámetro Tipo   Descripción
puntero  Puntero in Puntero del cual recuperar el objeto referenciado
nomVar  Cadena in Nombre de la variable referenciada o cadena vacía
numTabla  Entero largo in Número de la tabla o del elemento del array referenciado o 0 o -1
numCamp  Entero largo in Número del campo referenciado o 0

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 array Nombre 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.

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).

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=0)&($vsNomVar="")))
  ` ATENCIÓN: El puntero no es una referencia a una tabla
       TRACE
       End
    End if
  ` ...

Ver el ejemplo del comando DRAG AND DROP PROPERTIES.

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

 ARRAY TEXT(atCities;100;50)
 C_POINTER($city)
 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 

DRAG AND DROP PROPERTIES
Field
Get pointer
Is a variable
Nil
Table

 
PROPIEDADES 

Producto: 4D
Tema: Lenguaje
Número 394

This command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v6
Modificado: 4D v15

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)