4D v17.4

Tipos de datos

Inicio

 
4D v17.4
Tipos de datos

Tipos de datos  


 

 

Los campos, variables, y expresiones de 4D pueden ser de los siguientes tipos de datos:

Tipos de datosCampoVariableExpresión
Cadena (ver nota 1)
Numérico (ver nota 2)
Fecha
Hora
Booleano
Imagen
PunteroNo
BLOB (ver nota 3)No
Array (ver nota 4)NoNo
Entero 64 bits (ver nota 5)NoNo
Flotante (ver nota 5)NoNo
Objeto
ColecciónNo
IndefinidoNo
NullNoNo

Notas:

  1. Una cadena puede ser un campo alfanumérico, una variable de longitud fija, o un campo o variable tipo Texto.
  2. Un numérico puede ser una variable o campo de tipo Real, Entero, y Entero largo.
  3. BLOB es la abreviación de Binary Large OBject. Para mayor información sobre BLOBs, consulte la sección Comandos BLOB.
  4. Los arrays pueden ser de todo tipo. Para mayor información, consulte la sección Arrays
  5. Los tipos Entero 64 bits y Flotante, sólo son manejados vía SQL. No es recomendable trabajar con ellos vía el lenguaje 4D, porque en este caso ellos se convierten en tipo Real lo cual puede producir pérdida de precisión.

Cadena  

Cadena es término genérico que se utiliza para:

  • las variables o campos de tipo alfanumérico: un campo alfanumérico puede contener de 0 a 255 caracteres (el límite se fija durante la definición del campo).
  • las variables o campos tipo Texto: un campo, una variable o una expresión de tipo texto puede contener de 0 a 2 GB de texto.
  • toda expresión de tipo Alfa o Texto
No hay diferencia entre una variable alfanumérica y una variable texto.
Puede asignar una variable alfa a un texto y viceversa; 4D efectúa la conversión, truncando los valores si es necesario. Puede mezclar cadena y texto en las expresiones.

Nota: en el manual del Lenguaje 4D, los parámetros de tipo Alfa y Texto en las descripciones de comandos son llamados Cadena, excepto cuando se especifique de otra forma.

Númerico es un término genérico que se utiliza para:

  • campos, variables o expresiones de tipo Real
  • campos, variables o expresiones de tipo Entero
  • campos, variables o expresiones de tipo Entero largo

El rango de números de tipo Real es ±1.7e±308 (13 cifras significativas)
El rango de números de tipo Entero ( 2-bytes) es -32,768..32,767 (2^15..(2^15)-1)
El rango de números de tipo Entero largo (4-bytes) es -2^31..(2^31)-1

Puede asignar todo número de tipo numérico a otro número de otro tipo numérico; 4D hace la conversión, truncando o redondeando si es necesario. Sin embargo, cuando los valores se salen del rango, la conversión no devolverá un valor válido. Puede mezclar tipos de datos numéricos en expresiones.

Nota: en el Manual del lenguaje 4D, sin importar el tipo de dato, los parámetros de tipo Real, Entero, y Entero largo en las descripciones de los comandos son llamados numéricos, excepto cuando se establezca de otra manera.

Fecha  

  • Un campo, variable o expresión tipo Fecha puede estar en el rango de 1/1/100 a 12/31/32,767.
  • Utilizando la versión en español de 4D, una fecha se estructura día/mes/año.
  • Si un año tiene sólo dos dígitos, se asume que el siglo es el 20 si el valor es mayor o igual a 30, y el 21 si el valor es menor de 30 (este comportamiento por defecto se puede cambiar utilizando el comando SET DEFAULT CENTURY).
  • Aunque el modo de representación de fechas por C_DATE permite trabajar con fechas hasta el año 32.767, ciertas operaciones que pasan por el sistema imponen un límite inferior.

Nota: en el Manual del lenguaje de 4D, los parámetros de tipo Fecha en las descripciones de los comandos son llamados Fecha, excepto cuando se establezca de otra forma.

Las fechas en JavaScript son objetos, son enviadas a 4D como texto que contiene su forma JSON como cualquier otro objeto. Este principio se aplica, en particular, cuando se utilizan las funcionalidades 4D Mobile o Área web.
La forma JSON del objeto Date JavaScript sigue la norma ISO 8601, por ejemplo, 2013-08-23T00:00:00Z".

Es su responsabilidad convertir este texto en una fecha 4D (C_DATE ). Están disponibles dos soluciones:

  • Utilizar el comando JSON Parse:
     C_TEXT($1// recepción de una fecha en formato ISO
     C_DATE($d)
     $d:=JSON Parse("\""+$1+"\"";Is date))
  • Utilizar el comando Date:
     C_TEXT($1// recepción de una fecha en formato ISO
     C_DATE($d)
     $d:=Date($1)

Observe la diferencia entre estas dos soluciones: JSON Parse respeta el modo de conversión definido por el comando SET DATABASE PARAMETER (si lo hay), mientras que Date no está sujeta a este. La conversión con el comando Date siempre tiene en cuenta la zona horaria local.

Nota: a partir de 4D v16 R6, si la configuración de almacenamiento de fecha actual es "tipo fecha", las cadenas fecha JSON en formato "AAAA-MM-DD" se manejan automáticamente como valores de fecha por los comandos JSON Parse y Date. Para más información sobre esta configuración, consulte la opción "Utilizar tipo de fecha en lugar de formato de fecha ISO en objetos" en Página Compatibilidad.

Hora  

  • Un campo, variable, o expresión tipo Hora puede estar en el rango de 00:00:00 a 596 000:00:00.
  • Utilizando la versión en español de 4D, una hora se estructura bajo la forma hora:minutos:segundos.
  • Las horas están en formato de 24 horas.
  • Un valor de tipo Hora puede tratarse como un número. El número que devuelve es el número de segundos que el tiempo representa. Para mayor información, consulte la sección .

Nota: en el Manual del lenguaje de 4D, los parámetros de tipo Hora en las descripciones de los comandos son llamados Hora, excepto cuando se establezca de otra forma.

Un campo, variable o expresión booleano puede ser VERDADERO o FALSO.

Nota: en el Manual de lenguaje, los parámetros de tipo Booleano en las descripciones se llaman Booleanos, a menos de que establezca de otra forma.

Imagen  

Un campo, variable o expresión de tipo Imagen puede contener imágenes Windows o Macintosh. En general, esto incluye cualquier imagen que se pueda colocar en el Portapapeles o leer desde el disco utilizando comandos de 4D o de un plug-in.

Nota: en el Manual del lenguaje 4D, los parámetros de tipo imagen en las descripciones de los comandos son llamados Imagen, a menos de que se establezca de otra forma.

Puntero  

Una variable o expresión de tipo puntero es una referencia a otras variables (incluyendo arrays y elementos de array), tablas o campos. No hay campos de tipo Puntero.

Para mayor información sobre Punteros, consulte la sección Punteros.

Nota: en el Manual de lenguaje, los parámetros de tipo Puntero en las descripciones de comandos son llamados Puntero excepto cuando se establezca de otra forma.

BLOB  

Un campo o variable de tipo BLOB es una serie de bytes (de un lago de 0 a 2 GB) que puede direccionar individualmente o utilizando los . No hay expresiones de tipo BLOB.

Nota: en el Manual de lenguaje de 4D, los parámetros BLOB en las descripciones de los comandos se llaman BLOB.

Objeto  

Las variables, campos o expresiones de tipo Objeto pueden contener varios tipos de datos. La estructura de los objetos 4D "nativos" se basa en el principio clásico de los pares "propiedad/valor" (también llamado "atributo/valor). La sintaxis de estos objetos se basa en JSON, pero no la sigue completamente.

  • Un nombre de propiedad es siempre texto, por ejemplo "Nombre" (hasta 255 caracteres, sensible a las mayúsculas y minúsculas).
  • Un valor de propiedad puede ser del siguiente tipo:
    • número (Real, Entero, etc)
    • texto
    • array (texto, real, booleano, objeto, puntero)
    • nulo
    • Booleano
    • puntero (almacenado como tal, evaluado utilizando el comando JSON Stringify o al copiar),
    • fecha (tipo fecha o cadena de formato de fecha ISO): consulte Página Compatibilidad, "Utilizar el tipo fecha en lugar del formato de fecha ISO en objetos".
    • objeto (los objetos pueden estar anidados en varios niveles)
    • imagen(*)
    • colección

Atención: recuerde que los nombres de atributos diferencian entre mayúsculas y minúsculas.

Para manejar variables, campos o expresiones de tipo Objeto puede utilizar la notación objeto (ver Uso de la notación objeto) o los comandos Objetos (Lenguaje) de 4D, tales como OB Get y OB SET. Tenga en cuenta que los comandos específicos del tema Búsquedas tales como QUERY BY ATTRIBUTE, ORDER BY ATTRIBUTE y QUERY SELECTION BY ATTRIBUTE se puede utilizar para realizar el procesamiento en campos objeto.

Dado que los campos Objeto normalmente se basan en texto, los contenidos de un campo Objeto se muestran en un formulario 4D de forma predeterminada como texto y se formatean en JSON.

(*) Cuando se expone como texto en el depurador o se exporta a JSON, las propiedades del objeto imagen se muestran como "[object Picture]". Preste atención al hecho de que al guardar el registro se guardará la cadena "[object Picture]" en el atributo.

Nota: para trabajar con objetos JSON, puede utilizar los comandos encontrados en el tema "JSON".

Una variable Colección puede contener una lista ordenada de valores de varios tipos, por ejemplo:

 C_COLLECTION($col)
 $col:=New collection("Ford";"Renault";"Nissan";500;100;True)
  //$col=["Ford","Renault","Nissan",500,100,true]

Los tipos de valores soportados son texto, número, objeto, array, booleano, colección o nulo. No hay ninguna expresión o campo de tipo Colección.

Para administrar las variables del tipo Colección, necesita utilizar la notación de objeto (ver Uso de la notación objeto) y los comandos del tema Colecciones.

  • Usted accede a los elementos de la colección a través de su número de elemento (índice),
  • Para designar un elemento, use la siguiente sintaxis: myCollection[N], donde N es el índice del elemento de colección
  • Atención: el índice del elemento de colección comienza en 0

Ejemplo:

 C_COLLECTION($col)
 $col:=New collection("Ford";"Renault";"Nissan")
 $col[1]:="BMW"
  //$col=["Ford","BMW","Nissan"]

Las variables Colección almacenan arrays JSON. Un array JSON es una colección de valores separados por comas de cualquier tipo, por ejemplo:

 C_COLLECTION($c1;$c2)
 C_TEXT($json1;$json2)
 $c1:=JSON Parse("[\"Ford\",\"Renault\",\"Nissan\",500,100,true]")
 $json1:=JSON Stringify($c1)
  //$json1=["Ford","Renault","Nissan",500,100,true]
 $c2:=JSON Parse("[1,2,3,\"a\",\"b\",\"c\"]")
 $json2:=JSON Stringify($c2)
  //$json2=[1,2,3,"a","b","c"]

Indefinido no es realmente un tipo de datos. Denota una variable que no ha sido definida aún. Una función (un método de proyecto que devuelve un resultado) puede devolver un valor indefinido, dentro del método, el resultado de la función ($0) se asigna a una expresión indefinida (una expresión calculada con por lo menos una variable indefinida). Un campo no puede ser indefinido. (El comando Undefined siempre devuelve False a un campo).

Null  

Null es un tipo de datos especial con un solo valor posible: null. Este valor es devuelto por una expresión que no contiene ningún valor.

Desde el punto de vista de la base de datos 4D, un valor null expresa el hecho de que el valor del dato es desconocido. No significa que el valor está en blanco, o vacío ("" para una cadena, o 0 para un entero largo son valores en blanco). En la base de datos 4D, los valores nulos en campos (excepto los atributos de los campos Objeto) son manejados únicamente por el motor SQL. Una opción de campo específica le permite configurar cómo la base de datos debe manejar este valor (Mapear valores NULOS a valores vacíos) y puede definir o leer los valores nulos usando los comandos Is field value Null y SET FIELD VALUE NULL.

En el lenguaje 4D y para los atributos de los campos objeto, los valores null se gestionan mediante la función Null. Esta función se puede utilizar con las siguientes expresiones para definir o comparar el valor nulo:

  • Atributos objeto
  • Elementos de la colección
  • Variables de tipo objeto, colección, puntero o imagen

Array  

Un array no es realmente un tipo de datos. Los diferentes tipos de arrays (como Array entero, Array texto, etc.) se agrupan bajo este título. Los arrays son variables, no hay campos ni expresiones de tipo Array. Para mayor información sobre arrays, consulte la sección Arrays.

Nota: en el Manual de lenguaje 4D, los parámetros de tipo Array en las descripciones de los comandos son llamados Arrays, excepto cuando se establezca de otra forma (por ejemplo Array Texto, Array numérico, ...).

El lenguaje de 4D contiene operadores y comandos para convertir tipos de datos en otros tipos, en la medida en que las conversiones tengan sentido. El lenguaje 4D se asegura de la verificación de los tipos de datos. Por ejemplo, no puede escribir: "abc"+0.5+!12/25/96!-?00:30:45?. Esto generará errores de sintaxis.

La siguiente tabla lista los tipos de datos básicos, los tipos de datos en los que se pueden convertir y los comandos a utilizar para hacerlo:

Tipos a convertirConvertir en cadenaConvertir en númeroConvertir en fechaConvertir en Hora
Cadena (*)NumDateTime
Numérico (**)String
FechaString
HoraString
BooleanoNum
ObjetoJSON Stringify
ColecciónJSON Stringify

(*) Las cadenas formateadas en JSON pueden convertirse en datos escalares, objetos, o colecciones, utilizando el comando JSON Parse.
(**) Los valores de tipo Hora pueden tratarse como números.

Nota: además de las conversiones de datos listadas en esta tabla, se pueden obtener conversiones de datos más sofisticadas combinando operadores y otros comandos.



Ver también 

Arrays
Guía de declaración
Métodos
Presentación de comandos JSON
Punteros
Type
Utilización de directivas de compilación
Variables

 
PROPIEDADES 

Producto: 4D
Tema: Presentación del lenguaje

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Modificado: 4D v16 R4
Modificado: 4D v16 R6

 
ARTICLE USAGE

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