4D v16

Ponteiros

Página Inicial

 
4D v16
Ponteiros

Ponteiros    


 

 

Além das manipulações explicadas no vídeo, também deve levar em conta que:

Usar um ponteiro é bastante fácil. A vantagem de seu uso é para fazer a programação mais genérica e adaptável.

O conceito de ponteiro é simples e o usamos todos os dias ao falar.

Na frase “meu cachorro está na casa”, se utilizam dois ponteiros.

Si Paulo diz “coloque na gaveta”, ¿de qual gaveta está falando?

A gaveta que Paulo indicou com o dedo. Referiu-se a uma gaveta que a outra pessoa vai “desapontar” (olhar para qual gaveta aponta o dedo de Paulo).

Esta idéia simples funciona bem em 4D e permite substituir as gavetas com as tabelas, campos ou variáveis.

Se eu pedir a 4D realizar uma pesquisa nesta tabela, primeiro é necessário definir que tabela consultar apontando para ela da seguinte forma:

 MiPuntero:=->[TABLA]

Ao princípio, é possível que tenha alguns problemas com os ponteiros, mas logo descobrirá que são fáceis de implementar e que oferecem um grande poder.
Os ponteiros são normalmente utilizados como parâmetros durante as chamadas de métodos. Recomendamos-lhe que passar algum tempo para familiarizar-se com seu uso, já que são úteis quando pense:

  • “Vou a duplicar este botão”
  • Ou “tenho que copiar este método e depois o adaptar”.

Quando necessite administrar listas de ponteiros, então será a hora de olhar aos arrays de ponteiros.

Lembre que também pode utilizar o comando Get pointer que lhe permite definir o nome dos ponteiros a partir de uma cadeia de caracteres. Por exemplo:

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

Neste vídeo, vamos a aprender sobre os ponteiros e como otimizar sua programação e que sejam genéricos.

Como vimos no exercício anterior, definir opções para cada ação (pesquisar, ordenar, etc) no método NAVIGATION_FUNCTIONS pode ser convertida rapidamente em algo chato. Portanto temos que orientar a ação em direção a tabela que corresponde à página selecionada.

Neste caso, é mais fácil indicar só uma vez ao princípio do método a tabela a utilizar. Podemos armazenar esta indicação em uma variável e depois usar esta variável nos comandos.

Logicamente, não podemos dizer que uma variável é igual a uma tabela, estes objetos são completamente diferentes e têm um conteúdo completamente diferente. Já aprendemos que uma variável pode ser de tipo inteiro, numérico, texto, imagem, etc.. e contém um valor do tipo correspondente. Uma tabela não é um "conteúdo" como é um valor numérico.

A solução é utilizar uma variável de tipo ponteiro.

Assim que vamos a definir esta variável, que é uma variável local:

 C_POINTER($TablePointer)

Esta variável existe em memória. Agora, para assinalar um valor, vamos a utilizar os seguintes tipos de sintaxes:

 $TablePointer:=->[INTERVENTIONS]

Assim como temos visto para as variáveis, temos:

  • Uma inicialização
  • Uma atribuição de valor

E, mais adiante, em qualquer lugar onde a tabela Interventions deveria ter sido utilizada, vamos poder substituí-la com esta variável, que teremos que "desapontar" neste caso.

A vantagem é que todo o código está aqui, que é um simples copiar colar com só uma mudança da tabela, se pode substituir por estas 2 mesmas linhas de código, sempre que temos previamente definido a tabela à que deve apontar dependendo do número de página.

Assim que temos que obter o código que foi escrito antes, e aqui nos indicam que:

  • Se estivermos na página 1, apontamos a interventions (->[INTERVENTIONS])
  • Se estivermos na página 2, apontamos a technicians  (->[TECHNICIANS])

Dito isto, já não é necessário provar as páginas aqui e portanto, já não é útil ter este programa duplicado.

Temos uma primeira programação aqui que nos permite:

  • Definir a tabela relativa dependendo da página
  • A continuação, definir a ação a realizar, independentemente da página já que a tabela correta foi definida.

O mesmo princípio aplica para as pesquisas:

  • Vamos a mover o código aqui
  • Eliminar por completo o "Case of" que está aqui
  • E substituir "intervention" com um ponteiro à tabela já que estamos na página 2

Quando chegamos aqui, o ponteiro será um ponteiro a "Technicians" e, portanto vamos a procurar na tabela "Technicians".

O número de registros encontrados é o número de registros que se encontram na tabela "Technicians".

 
 

 
PROPRIEDADES 

Produto: 4D
Tema: Ponteiros

 
HISTÓRIA 

 
ARTICLE USAGE

Autoformação ( 4D v16)