Saltar para o conteúdo principal
Versão: 20 R5

Tipos de dados

Em 4D, os dados se manejam segundo seu tipo em dois lugares: os campos do banco de dados e a linguagem 4D.

Apesar de geralmente serem equivalentes, alguns tipos de dados disponíveis no nível do banco de dados não estão diretamente disponíveis na linguagem e são convertidos automaticamente. Por outro lado, alguns tipos de dados pode somente ser manejados através da linguagem. A tabela lista todos os tipos de dados disponíveis e sua compatibilidade/declarações:

Tipos de dadosSuporte para o banco (1)Suporte Linguagem[Declaração var] (variables.md#using-the-var-keyword)Declaração [C_ ou ARRAY] (variables.md#using-a-c_-directive)
AlfanuméricoSimConvertido em texto-*
TextSimSimTextC_TEXT, ARRAY TEXT
DateSimSimDateC_DATE, ARRAY DATE
TimeSimSimTimeC_TIME, ARRAY TIME
BooleanSimSimBooleanC_BOOLEAN, ARRAY BOOLEAN
IntegerSimConvertido para longIntIntegerARRAY INTEGER
LongintSimSimIntegerC_LONGINT, ARRAY LONGINT
Longint 64 bitsSim (SQL)Convertido para real-*
RealSimSimRealC_REAL, ARRAY REAL
Undefined-Sim*-
Null*Sim-*
Ponteiro-SimPointerC_POINTER, ARRAY POINTER
PictureSimSimPictureC_PICTURE, ARRAY PICTURE
BLOBSimSimBlob, 4D.BlobC_BLOB, ARRAY BLOB
ObjectSimSimObjectC_OBJECT, ARRAY OBJECT
Coleção*SimCollectionC_COLLECTION
Variant(2)-SimVariantC_VARIANT

(1) Note que ORDA maneja campos de bancos de dados através de objetos (entidades) e assim, só é compatível com tipos de dados disponíveis a esses objetos. Para obter mais informações, consulte a descrição do tipo de dados [Object] (Concepts/dt_object.md).

(2) Na verdade, a variante não é um tipo de dado, mas um tipo de variável que pode conter um valor de qualquer outro tipo de dado.

Valor padrão

Quando as variáveis ou os parâmetros são digitados por meio de uma declaração explícita, eles recebem um valor padrão, que manterão durante a sessão, desde que não tenham sido atribuídos.

O valor por defeito depende do tipo de variável:

TipoValor padrão
BooleanoFalse
Date00-00-00
Longint0
Hora00:00:00
Imagemtamanho da imagem=0
Real0
PonteiroNil=true
Text""
BlobTamanho do Blob =0
Objectnull
Collectionnull
Diferente deindefinido

Null como valor padrão

As variáveis do tipo Object, Collection, Pointer e Picture têm null como valor padrão, mas na verdade recebem um status intermediário quando são declaradas e não atribuídas. Eles se comportam como valores null, mas com algumas diferenças, gerar menos erros quando o código tenta acessá-los.

Conversão de tipos de dados

A linguagem 4D contém operadores e comandos para converter entre tipos de dados, onde tais conversões são significativas. A língua 4D obriga à verificação do tipo de dados. Por exemplo, não se pode escrever: "abc"+0.5+!12/25/96!-?00:30:45?. Isto irá gerar erros de sintaxe.

O quadro seguinte lista os tipos de dados básicos, os tipos de dados para os quais podem ser convertidos, e os comandos utilizados para o fazer:

Tipo de dados a converterpara Stringpara Númeropara Datapara Tempopara Booleano
String (1)NumDateTimeBool
Número (2)StringBool
DateStringBool
HoraStringBool
ParâmetrosNum

(1) As cadeias de caracteres formatadas em JSON podem ser convertidas em dados escalares, objetos ou coleções, usando o comando JSON Parse.

(2) Os valores de tempo podem ser tratados como números.

Nota: Além das conversões de dados listadas nesta tabela, as conversões de dados mais sofisticadas podem ser obtidas combinando operadores e outros comandos.