4D v13.4Type |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v13.4
Type
|
Type ( campVar ) -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
campVar | Campo, Variável |
![]() |
Campo ou Variável a ser testada | |||||
Resultado | Inteiro longo |
![]() |
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 |
Is Float | Inteiro longo | 35 |
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).
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
Produto: 4D
Tema: Linguagem
Número
295
Modificado: 4D v11 SQL