4D v16

Punteros

Inicio

 
4D v16
Punteros

Punteros    


 

 

Además de las manipulaciones explicadas en el vídeo, también debe tener en cuenta que:

Usar un puntero es bastante fácil. La ventaja de su uso es para hacer la programación más genérica y adaptable.

El concepto de puntero es simple y lo usamos todos los días al hablar.

En la frase "mi perro está en la casa", se utilizan dos punteros.

Si Pablo dice "ponlo en el cajón", ¿de qué cajón está hablando?

El cajón que Pablo indicó con el dedo. Se refirió a un cajón que la otra persona va a "desapuntar" (mirar hacia cuál cajón apunta el dedo de Pablo).

Esta idea simple funciona bien en 4D y permite sustituir los cajones con las tablas, campos o variables.

Si le pido a 4D realizar una búsqueda en esta tabla, primero es necesario definir qué tabla consultar apuntando hacia ella de la siguiente forma:

 MiPuntero:=->[TABLA]

Al principio, es posible que tenga algunos problemas con los punteros, pero pronto descubrirá que son fáciles de implementar y que ofrecen un gran poder.
Los punteros se suelen utilizar como parámetros durante las llamadas de métodos. Le recomendamos que pasar algún tiempo familiarizándose con su uso, ya que son muy útiles  cuando piense:

  • "Voy a duplicar este botón"
  • o "tengo que copiar este método y luego adaptarlo".

Cuando necesite administrar listas de punteros, entonces será hora de mirar a los arrays de punteros.

Recuerde que también puede utilizar el comando Get pointer que le permite definir el nombre de los punteros a partir de una cadena de caracteres. Por ejemplo:

 Get pointer("MiVariable"+String($i))

En este video, vamos a aprender sobre los punteros y cómo optimizar su programación y que sean genéricos.

Como vimos en el ejercicio anterior, definir opciones para cada acción (buscar, ordenar, etc) en el método NAVIGATION_FUNCTIONS puede convertirse rápidamente en algo fastidioso. Por lo tanto, tenemos que orientar la acción hacia la tabla que corresponde a la página seleccionada.

En ese caso, es más fácil indicar sólo una vez al principio del método la tabla a utilizar.  Podemos almacenar esta indicación en una variable y luego usar esta variable en los comandos.

Lógicamente, no podemos decir que una variable es igual a una tabla, estos objetos son completamente diferentes y tienen un contenido completamente diferente. Ya hemos aprendido que una variable puede ser de tipo entero, numérico, texto, imagen, etc. y contiene un valor del tipo correspondiente. Una tabla no es un "contenido" como lo es un valor numérico.

La solución es utilizar una variable de tipo puntero.

Así que vamos a definir esta variable, que es una variable local:

 C_POINTER($TablePointer)

Esta variable existe en memoria. Ahora, para asignar un valor, vamos a utilizar los siguientes tipos de sintaxis:

 $TablePointer:=->[INTERVENTIONS]

Así como lo hemos visto para las variables, tenemos:

  • una inicialización
  • una asignación de valor

y, más adelante, en cualquier lugar donde la tabla Interventions debiera haber sido utilizada, vamos a poder sustituirla con esta variable, que tendremos que "desapuntar" en este caso.

La ventaja es que todo el código está aquí, que es un simple copiar pegar con sólo un cambio de la tabla, se puede sustituir por estas 2 mismas líneas de código, siempre que hayamos previamente definido la tabla a la que debe apuntar dependiendo del número de página.

Así que tenemos que obtener el código que hemos escrito antes, y aquí nos indican que:

  • Si estamos en la página 1, apuntamos a interventions (->[INTERVENTIONS])
  • Si estamos en la página 2, apuntamos a technicians (->[TECHNICIANS])

Dicho esto, ya no es necesario probar las páginas aquí y por lo tanto ya no es útil tener este programa duplicado.

Tenemos una primera programación aquí que nos permite:

  • definir la tabla concerniente dependiendo de la página
  • a continuación, definir la acción a realizar, independientemente de la página ya que la tabla correcta fue definida.

El mismo principio aplica para las búsquedas:

  • vamos a mover el código aquí
  • eliminar por completo el "Case of" que está aquí
  • y remplazar "intervention" con un puntero a la tabla ya que estamos en la página 2

Cuando llegamos aquí, el puntero será un puntero a "Technicians" y por lo tanto vamos a buscar en la tabla "Technicians".

El número de registros encontrados es el número de registros que se encuentran en la tabla "Technicians".

 
 

 
PROPIEDADES 

Producto: 4D
Tema: Punteros

 
HISTORIA 

 
ARTICLE USAGE

Autoformación ( 4D v16)