versión 11 (Modificado)
Type (campVar) Numérico
| Parámetro | Tipo | Descripción | |
| campVar | Campo | Variable | Campo o variable a probar | |
| Resultado | Numérico | Número de tipo de datos |
Descripción
El comando Type devuelve un valor numérico que indica el tipo de campo o variable que usted pasa en campVar.
4D ofrece las siguientes constantes predefinidas:
| Constante | Tipo | Valor |
| Is Alpha Field | Entero largo | 0 |
| Is String Var | Entero largo | 24 |
| Is Text | Entero largo | 2 |
| Is Real | Entero largo | 1 |
| Is Integer | Entero largo | 8 |
| Is LongInt | Entero largo | 9 |
| Is Date | Entero largo | 4 |
| Is Time | Entero largo | 11 |
| Is Boolean | Entero largo | 6 |
| Is Picture | Entero largo | 3 |
| Is Subtable | Entero largo | 7 |
| Is BLOB | Entero largo | 30 |
| Is Undefined | Entero largo | 5 |
| Is Pointer | Entero largo | 23 |
| String Array | Entero largo | 21 |
| Text Array | Entero largo | 18 |
| Real Array | Entero largo | 14 |
| Integer Array | Entero largo | 15 |
| LongInt Array | Entero largo | 16 |
| Date Array | Entero largo | 17 |
| Boolean Array | Entero largo | 22 |
| Picture Array | Entero largo | 19 |
| Pointer Array | Entero largo | 20 |
| Array 2D | Entero largo | 13 |
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).
Puede aplicar Type a campos, variables interproceso, variables proceso, variables locales y a los apuntadores sin referencia que hacen referencia a 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).
Ejemplos
1. Ver ejemplo del comando APPEND DATA TO PASTEBOARD.
2. Ver ejemplo del comando DRAG AND DROP PROPERTIES.
3. 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:
` Método de proyecto BORRAR REGISTRO
` BORRAR REGISTRO ( Puntero {; Entero largo } )
` BORRAR REGISTRO ( -> [Tabla] { ; 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($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:
` Borrar todo el registro actual de la tabla [Cosas por hacer] BORRAR REGISTRO (->[Cosas por hacer]) ` Borrar los campos de tipo Texto, BLOB e Imagen del registro actual de la tabla [Cosas por hacer] BORRAR REGISTRO(->[Cosas por hacer]; 0 ?+ Is Text ?+ Is BLOB ?+ Is Picture ) ` Borrar la totalidad del registro actual de la tabla [Cosas por hacer] excepto los campos Alfa BORRAR REGISTRO (->[Cosas por hacer]; -1 ?- Is Alpha Field )4. En algunos casos, por ejemplo cuando se escribe código genérico, usted puede necesitar saber si un array es un array estándar independiente o una "fila" de un array 2D. En este caso, usted puede utilizar el siguiente código:
ptrmiArr:=->miArr{6} ` ¿Es miArr{6} la fila de un array 2D?
RESOLVE POINTER (ptrmiArr;varNombre;numTabla;numCamp)
If (varNombre#"")
$ptr:=Get pointer (varNombre)
$eltipo:=Type($ptr->)
` Si miArr{6} es una fila de un array 2D, $eltipo es igual a 13
End if
Ver también