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:
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".