| 4D v15 R2Type | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v15 R2
 Type 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type ( campVar ) -> Resultado | ||||||||
| Parámetro | Tipo | Descripción | ||||||
| campVar | Campo, Variable |   | Campo o variable a probar | |||||
| Resultado | Entero largo |   | 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).
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 forDespué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
	Producto: 4D
	Tema: Lenguaje
	Número 
        295
        
        
        
	
	Modificado: 4D v11 SQL  
	
	
	
	
	
	Manual de lenguaje 4D ( 4D v15)
	
	Manual de lenguaje 4D ( 4D v15 R2)
	
	
	
	Manual de lenguaje 4D ( 4D v15.4)
	
	Manual de lenguaje 4D ( 4D v15.3)
 Añadir un comentario
Añadir un comentario