Type
Type* ( campVar ) : Integer
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| campVar | Field, Variable | → | Campo ou Variável a ser testada | 
| Resultado | Integer | ← | Número de tipo de dados | 
Descriçã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 ($ptrTable, $flags ... ${...}) 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, $ptrTable...) declarado como C_VARIANT não retorna Is variante sim o tipo de dados (mesma coisa que chamar Value type)
Exemplo 1
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 } )
 #DECLARE($ptrTable : Pointer ; $flags : Integer)
 var $vlTipoVal : Integer
 If(Count parameters>=2)
    $vlTipoVal:=$flags
 Else
    $vlTipoVal:=0xFFFFFFFF
 End if
 For($vlCampo;1;Count fields($ptrTable))
    $vpCampo:=Field(Table($ptrTable);$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)
             var $vgImagemVaxia : Picture
             $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)
Exemplo 2
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
Exemplo 3
Ver exemplo do comando APPEND DATA TO PASTEBOARD.
Ver também
Is a variable
Undefined
Value type
Propriedades
| Número do comando | 295 | 
| Thread-seguro | ✓ |