El comando Type devuelve un valor numérico que indica el tipo del campo o de la variable que pasa en campVar.
4D ofrece las siguientes constantes predefinidas que se encuentran en el tema Tipos de campos y variables:
Constante |
Tipo |
Valor |
Is alpha field |
Entero largo |
0 |
Is real |
Entero largo |
1 |
Is text |
Entero largo |
2 |
Is picture |
Entero largo |
3 |
Is date |
Entero largo |
4 |
Is undefined |
Entero largo |
5 |
Is Boolean |
Entero largo |
6 |
Is subtable |
Entero largo |
7 |
Is integer |
Entero largo |
8 |
Is longint |
Entero largo |
9 |
Is time |
Entero largo |
11 |
Array 2D |
Entero largo |
13 |
Real array |
Entero largo |
14 |
Integer array |
Entero largo |
15 |
LongInt array |
Entero largo |
16 |
Date array |
Entero largo |
17 |
Text array |
Entero largo |
18 |
Picture array |
Entero largo |
19 |
Pointer array |
Entero largo |
20 |
String array |
Entero largo |
21 |
Boolean array |
Entero largo |
22 |
Is pointer |
Entero largo |
23 |
Is string var |
Entero largo |
24 |
Is integer 64 bits |
Entero largo |
25 |
Is BLOB |
Entero largo |
30 |
Blob array |
Entero largo |
31 |
Time array |
Entero largo |
32 |
Is float |
Entero largo |
35 |
Is object |
Entero largo |
38 |
Object array |
Entero largo |
39 |
Is JSON null |
Entero largo |
255 |
Notas:
• Type devuelve 9 (Is LongInt) cuando se aplica a una variable de tipo gráfico.
• A partir de la versión 11 de 4D, Type devuelve el tipo actual de un array cuando se aplica a una "fila" de un array 2D, en lugar de un Array 2D como antes (ver ejemplo 4).
• A partir de la versión 11 de 4D, Type devuelve el tipo (Is text o Text array cuando se aplica respectivamente a una variable Alfa o a un array Alfa (a partir de esta versión, no hay diferencia entre una variable Alfa y Texto).
Puede aplicar
Type a campos, variables interproceso, variables proceso, variables locales y a los apuntadores sin referencia que referencian estos tipos de objetos. Puede aplicar
Type a los parámetros ($1,$2..., ${...}), de un método de proyecto o a un resultado de una función ($0).
Ver ejemplo del comando APPEND DATA TO PASTEBOARD.
Ver ejemplo del comando DRAG AND DROP PROPERTIES.
El siguiente método de proyecto borra una parte o la totalidad de los campos del registro actual de la tabla a la cual apunta el puntero pasado como parámetro. Hace esto sin borrar o cambiar el registro actual:
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($vgImagenVacia)
$vpCampo->:=$vgImagenVacia
:($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
Después de implementar este método de proyecto en su base de datos, puede escribir:
En algunos casos, por ejemplo cuando se escribe código genérico, puede necesitar saber si un array es un array estándar independiente o una "fila" de un array 2D. En este caso, puede utilizar el siguiente código:
ptrmiArr:=->miArr{6}
RESOLVE POINTER(ptrmiArr;varNombre;numTabla;numCamp)
If(varNombre#"")
$ptr:=Get pointer(varNombre)
$eltipo:=Type($ptr->)
End if