4D v16.3

Type

Inicio

 
4D v16.3
Type

Type 


 

Type ( campVar ) -> Resultado 
Parámetro Tipo   Descripción
campVar  Campo, Variable in Campo o variable a probar
Resultado  Entero largo in Número de tipo de datos

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:

  ` 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)

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} ` ¿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 

Is a variable
Undefined

 
PROPIEDADES 

Producto: 4D
Tema: Lenguaje
Número 295

This command can be run in preemptive processes

 
HISTORIA 

Modificado: 4D v11 SQL

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)