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

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 LinguagemDeclaração de variáveis"a um valor aleatório": 0x72677267 para números e horas, sempre True para booleanos, igual que "em zero" para os outros,
AlfanuméricoSimConvertido em texto--
TextSimSimTextC_TEXT, ARRAY TEXTO
DateSimSimDateC_DATE, ARRAY DATE
HoraSimSimHoraC_TIME, ARRAY TIME
ParâmetrosSimSimParâmetrosC_BOOLEAN, ARRAY BOOLEAN
IntegerSimConvertido para longIntIntegerARRAY INTEGER
LongintSimSimIntegerC_LONGINT, ARRAY LONGINT
Inteiro longo 64 bitsSim (SQL)Convertido para real--
RealSimSimRealC_REAL, ARRAY REAL
Indefinido-Sim--
Null-Sim--
Ponteiro-SimPonteiroC_POINTER, ARRAY POINTER
ImagemSimSimImagemC_PICTURE, ARRAY PICTURE
BLOBSimSimBlob, 4D. BlobC_BLOB, ARRAY BLOB
ObjectSimSimObjectC_OBJECT, ARRAY OBJECT
Collection-SimCollectionC_COLLECTION
Variant(2)-SimDiferente deC_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 saber mais, veja a descrição de tipo de dados Object.

(2) Variante não é um tipo data mas um tipo variável que contém um valor de qualquer outro tipo de dados.

Valor padrão​

Quando as variáveis ou parâmetros são digitados por meio de uma declaração explícita, recebem um valor por defeito, que manterão durante a sessão enquanto não lhes for atribuído.

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

TipoValor padrão
BooleanoFalse
Date00-00-00
Integer0
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 os valores null, mas com algumas diferenças, gerando 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)NumDateHoraBool
Número (2)StringBool
DateStringBool
HoraStringBool
ParâmetrosNum

(1) Strings 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. Conversões de dados mais sofisticadas podem ser obtidas combinando operadores e outros comandos.