Estendendo o tipo “String” do Magic xpa

Em Magic xpa (uniPaaS), o tipo de dado “string” é definido pelo tipo interno Alpha ou UniCode. São similares, com a diferença que Alpha define que cada caracter da string ocupará 1 byte (AnsiString) e UniCode, 2 bytes (WideString).

Para qualquer dos dois tipos, o limite é de 32.000 caracteres.

Em algumas situações, contudo, pode ser necessário armazenar textos (strings) maiores que este limite.

Nestes casos, pode-se utilizar os tipos internos BLOB Content:ANSI (Alpha) ou BLOB Content:Unicode (Unicode).

Os campos BLOBs não possuem restrição de tamanho (a memória para seu conteúdo é alocada dinamicamente conforme a necessidade). Virtualmente, podem chegar até 2GB (2.147.483.647 caracteres). E com estas configurações do atributo “content”, são 100% compatíveis em atribuição e concatenação com os tipos básicos (Alpha e UniCode) e funções cujos parâmetros ou retornos também são Alpha ou UniCode.

Considere as seguintes variáveis Magic xpa:

A (Alpha 32000)

B (UniCode 32000)

C BLOB/Ansi

D BLOB/UniCode

Se atribuir o resultado da expressão FILL(‘x’, 32000) & FILL(‘y’, 32000) a cada uma delas, as variáveis A e B conterão apenas a sequencia de letras ‘x’. Já as variáveis C e D, conterão toda a sequencia de ‘x’ seguidos de ‘y’.

A função LEN(?) retornará 32.000 para A e B, mas 64.000 para C e D.

As seguintes características diferem um pouco mais os tipos Alpha/UniCode dos BLOB.ANSI/BLOB.UniCode:

  • Inicialização = Alpha/UniCode são inicializados (por default) com espaços em branco até o total de sua capacidade. BLOB.ANSI/BLOB.UniCode, com NULL.
  • Tamanho do Conteúdo = Se colocar menos texto do que o máximo definido na variável Alpha/UniCode, ele será preenchido com espaços até o limite do campo. A função LEN() sempre retorna o tamanho total dos campos. Com BLOB.ANSI/BLOB.UniCode não há complemento de espaços à direita, e a função LEN() retorna o quantidade atual de caracteres existentes.
Manoel Frederico - Gerente de Produto e Magic Evangelista
Manoel Frederico – Gerente de Produto e Magic Evangelista

 

Deixe um comentário

O seu endereço de e-mail não será publicado.