4D v14.3

RESOLVE POINTER

Página Inicial

 
4D v14.3
RESOLVE POINTER

RESOLVE POINTER 


 

RESOLVE POINTER ( umPonteiro ; nomeVar ; numTabela ; numCampo ) 
Parâmetro Tipo   Descrição
umPonteiro  Ponteiro in Ponteiro do qual recuperar o objeto referenciado
nomeVar  cadeia in Nome da variável referenciada ou da string vazia
numTabela  Inteiro longo in Número de tabela referenciada ou elemento array ou 0 ou -1
numCampo  Inteiro longo in Número de campo referenciado ou 0

O comando RESOLVE POINTER recupera a informação do objeto referenciado pela expressão de ponteiro ponteiro e a devolve nos parâmetros nomVar, numTabela, e numCamp.

Dependendo da natureza do objeto referenciado, RESOLVE POINTER devolve os seguintes valores:

Objeto referenciadoParâmetros
nomVarnumTabelanumCamp
Nada (NIL pointer)"" (string vazia)00
VariávelNome da variável-10
ArrayNome do array-10
Elemento de array Nome do arraynúmero do elemento0
Tabela"" (string vazia)número da tabela0
Campo"" (string vazia)número da tabelanúmero do campo

Notas:

• Se o valor que passa em ponteiro não for uma expressão de tipo ponteiro, será gerado um erro de sintaxe.
• O comando RESOLVE POINTER não funciona com ponteiros a variáveis locais. Na verdade, por definição muitas variáveis locais com o mesmo nome poderiam existir em diferentes lugares, de maneira que não é possível para o comando encontrar a variável correta.

Em um formulário, você cria um grupo de 100 variáveis editáveis chamadas v1, v2... v100. Para fazer isto, você realiza os seguintes passos:

a. Cria uma variável editável que chama v.

b. Define as propriedades do objeto.

c. Associa o seguinte método ao objeto:

 FazerAlgo(Self` FazerAlgo é um método de projeto de seu banco


d. Neste ponto, pode duplicar a variável tantas vezes como seja necessária, ou utilizar a funcionalidade Duplicar sobre matriz no editor de formulários.

e. No método FazerAlgo, é necessário conhecer o índice da variável para a qual se chama o método, escreve:

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

Note que construindo seu formulário desta maneira, você escreve os métodos para as 100 variáveis apenas uma vez; não necessita escrever FazerAlgo (1), FazerAlgo (2)...,FazerAlgo (100).

Por propósitos de depuração, necessita verificar que o segundo parâmetro ($2) de um método é um ponteiro a uma tabela. Ao começo deste método, escreve:

  ` ...
 If(◊DebugOn)
    RESOLVE POINTER($2;$vsNomVar;$vlNumTabela;$vlNumCampo)
    If(Not(($vlNumTabela>0)&($vlNumCampo=0)&($vsNomVar="")))
  ` ATENÇAO: O ponteiro nao é uma referência a uma tabela
       TRACE
       End
    End if
  ` ...

Ver o exemplo do comando DRAG AND DROP PROPERTIES.

 
PROPRIEDADES 

Produto: 4D
Tema: Linguagem
Número 394

 
HISTÓRIA 

Criado por: 4D v6

 
VER TAMBÉM 

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

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v12.4)
Manual de linguagem 4D ( 4D v11 SQL Release 6)
Manual de linguagem 4D ( 4D v14 R2)
Manual de linguagem 4D ( 4D v14 R3)
Manual de linguagem 4D ( 4D v13.5)
Manual de linguagem 4D ( 4D v14.3)
Manual de linguagem 4D ( 4D v14 R4)