4D v16.3

Type

Página Inicial

 
4D v16.3
Type

Type 


 

Type ( campVar ) -> Resultado 
Parâmetro Tipo   Descrição
campVar  Campo, Variável in Campo ou Variável a ser testada
Resultado  Inteiro longo in Número de tipo de dados

O comando  Type devolve um valor numérico que indica o tipo do campo ou da variável que passa em campVar.
4D oferece as seguintes constantes pré-definidas:

Constante Tipo Valor
Is alpha field Inteiro longo 0
Is real Inteiro longo 1
Is text Inteiro longo 2
Is picture Inteiro longo 3
Is date Inteiro longo 4
Is undefined Inteiro longo 5
Is Boolean Inteiro longo 6
Is subtable Inteiro longo 7
Is integer Inteiro longo 8
Is longint Inteiro longo 9
Is time Inteiro longo 11
Array 2D Inteiro longo 13
Real array Inteiro longo 14
Integer array Inteiro longo 15
LongInt array Inteiro longo 16
Date array Inteiro longo 17
Text array Inteiro longo 18
Picture array Inteiro longo 19
Pointer array Inteiro longo 20
String array Inteiro longo 21
Boolean array Inteiro longo 22
Is pointer Inteiro longo 23
Is string var Inteiro longo 24
Is integer 64 bits Inteiro longo 25
Is BLOB Inteiro longo 30
Blob array Inteiro longo 31
Time array Inteiro longo 32
Is float Inteiro longo 35
Is object Inteiro longo 38
Object array Inteiro longo 39
Is JSON null Inteiro longo 255

Notas:
•  Type devolve 9 (Is LongInt) quando se aplica a uma variável de tipo gráfico.
• A partir da versão 11 de 4D,  Type devolve o tipo atual de um array quando é aplicado a uma "fila" de um array 2D, ao invés de um Array 2D como antes (ver exemplo 4).
• A partir da versão 11 de 4D,  Type devolve o tipo (Is text ou Text array quando se aplica respectivamente a uma variável Alfa ou a um array Alfa (a partir desta versão, não há diferença entre uma variável Alfa e Texto).

Pode aplicar  Type a campos, variáveis interprocesso, variáveis processo, variáveis locais e aos apontadores sem referência que referenciam estes tipos de objetos. Pode aplicar  Type aos parâmetros ($1,$2..., ${...}), de um método de projeto ou a um resultado de uma função ($0).

Ver exemplo do comando APPEND DATA TO PASTEBOARD.

Ver exemplo do comando DRAG AND DROP PROPERTIES.

O método de projeto a seguir apaga uma parte ou a totalidade dos campos do registro atual da tabela a qual aponta o ponteiro passado como parâmetro. Faz isto sem apagar ou modificar o registro atual:

  ` Método de projeto APAGAR REGISTRO
  ` APAGAR REGISTRO ( Ponteiro {; Inteiro longo } )
  ` APAGAR REGISTRO ( -> [Tabela] { ; Tipo de valores } )
 C_POINTER($1)
 C_LONGINT($2;$vlTipoVal)
 If(Count parameters>=2)
    $vlTipoVal:=$2
 Else
    $vlTipoVal:=0xFFFFFFFF
 End if
 For($vlCampo;1;Count fields($1))
    $vpCampo:=Field(Table($1);$vlCampo)
    $vlTipoCampo:=Type($vpCampo->)
    If($vlTipoVal??$vlTipoCampo )
       Case of
          :(($vlTipoCampo =Is alpha field)|($vlTipoCampo =Is text))
             $vpCampo->:=""
          :(($vlTipoCampo =Is real)|($vlTipoCampo=Is integer)|($vlTipoCampo =Is longint))
             $vpCampo->:=0
          :($vlTipoCampo =Is date)
             $vpCampo->:=!00/00/00!
          :($vlTipoCampo =Is time)
             $vpCampo->:=?00:00:00?
          :($vlTipoCampo =Is Boolean)
             $vpCampo->:=False
          :($vlTipoCampo =Is picture)
             C_PICTURE($vgImagemVaxia)
             $vpCampo->:=$vgImagemVazia
          :($vlTipoCampo =Is subtable)
             Repeat
                ALL SUBRECORDS($vpCampo->)
                DELETE SUBRECORD($vpCampo->)
             Until(Records in subselection($vpCampo->)=0)
          :($vlTipoCampo =Is BLOB)
             SET BLOB SIZE($vpCampo->;0)
       End case
    End if
 End for

Depois de implementar este método de projeto em seu banco de dados, pode escrever:

  ` Apagar todo o registro atual da tabela [Coisas a fazer]
 APAGAR REGISTRO(->[Coisas a fazer])
  ` Apagar os campos de tipo Texto, BLOB e Imagem do registro atual da tabela [Coisas a fazer]
 APAGAR REGISTRO(->[Coisas a fazer];0?+Is text?+Is BLOB?+Is picture)
  ` Apagar a totalidade do registro atual da tabela [Coisas a fazer] exceto os campos Alfa
 APAGAR REGISTRO(->[Coisas a fazer];-1?-Is alpha field)

Em alguns casos, por exemplo quando se escreve código genérico, pode necessitar saber se um array é um array normal independente ou uma "fila" de um array 2D. Neste caso, pode utilizar o código a seguir:

 ptrmeuArr:=->meuArr{6} ` É meuArr{6} a fila de um array 2D?
 RESOLVE POINTER(ptrmeuArr;varNome;numTabela;numCamp)
 If(varNome#"")
    $ptr:=Get pointer(varNome)
    $eltipo:=Type($ptr->)
  ` Se meuArr{6} é uma fila de um array 2D, $otipo é igual a 13
 End if



Ver também 

Is a variable
Undefined

 
PROPRIEDADES 

Produto: 4D
Tema: Linguagem
Número 295

This command can be run in preemptive processes

 
HISTÓRIA 

Modificado: 4D v11 SQL

 
ARTICLE USAGE

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