Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19.8
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 ofere as constantes pré-definidas abaixo encontradas no tema Tipos de campos e variáveis:

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

Se pode aplicar a função Type a campos, variáveis interprocesso, variáveis processo, variáveis locais e ponteiros sem referência para esses tipos de objetos. Pode aplicar  Type aos parâmetros ($1, $2 ... ${...}) de um método de projeto ou ao resultado da função ($0).

Nota:

  • Não se pode aplicar a função Type a expressões escalares tais como propriedades de objeto  (emp.name) ou itens coleção (myColl[5]). Para fazer isso, deve usar o comando Value type
  • Em modo compilado, chamar Type em um parâmetro método ($0, $1...) declarado como C_VARIANT não retorna  Is variante sim o tipo de dados (mesma coisa que chamar Value type)

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 exemplo do comando APPEND DATA TO PASTEBOARD.



Ver também 

dataClassAttribute.fieldType
Is a variable
Undefined
Value type

 
PROPRIEDADES 

Produto: 4D
Tema: Linguagem
Número 295

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Modificado: 4D v11 SQL

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)