4D suporta o tipo de dados BLOB (objetos binários grandes).
Você pode definir campos BLOB e variáveis BLOB:
- Para criar um campo BLOB, escolha BLOB no lista suspensa tipo de campo na janela Propriedades do Campo.
- Para criar uma variável BLOB, use o comando declaração do compilador C_BLOB. Você pode criar variáveis processo, locais, e inter-processos do tipo BLOB.
Nota: Não existem arrays para BLOBs.
Com 4D, um BLOB é uma série de bytes de comprimento variável, que pode ser tratado como um objeto inteiro ou cujos bytes podem ser endereçados individualmente. Um BLOB pode ser vazio (comprimento zero) ou pode conter até 2147483647 bytes (2 GB).
Um BLOB é carregado na memória na sua totalidade. Uma variável BLOB é realizada e existe apenas na memória. Um campo BLOB é carregado na memória do disco, como o resto do registro a que pertence.
Como os outros tipos de campo que podem reter uma grande quantidade de dados (imagens e tipos de campo subtabela), os campos BLOB, não são duplicadas na memória quando você modifica um registro. Consequentemente, o resultado retornado pelo Old e Modified comandos não é significativo quando aplicado a um campo BLOB.
Um BLOB pode reter qualquer tipo de dados, por isso não tem nenhuma representação padrão na tela. Se você exibir um campo BLOB ou variável em um formulário, ele vai aparecer sempre em branco, independentemente do seu conteúdo.
Você pode usar campos BLOB para armazenar qualquer tipo de dados, até 2 GB. Você não pode indexar um campo BLOB, então você deve usar uma fórmula para buscar registros sobre os valores armazenados em um campo BLOB.
BLOBs 4D podem ser passados como parâmetros para comandos 4D ou rotinas de plug-in que esperam um parâmetro de um BLOB. BLOBS também podem ser passadas como parâmetros para um método do usuário ou ser retornado como um resultado da função.
Para passar um BLOB para seus próprios métodos, você também pode definir um ponteiro para o BLOB e passar o ponteiro como parâmetro.
Exemplos:
C_BLOB(umaBlobVar)
SET BLOB SIZE(unBlobVar;1024*1024)
$errCode:=Fazer Algo Com Este BLOB(umaBlobVar)
C_BLOB(trazerBlob)
trazerBlob:=Preencher_Blob(umaBlobVar)
CALCULAR BLOB(->umaBlobVar)
Nota para os desenvolvedores de plug-in: Um parâmetro BLOB é declarado como "&O" (a letra "O", não o dígito "0").
Você pode atribuir BLOBs uns aos outros.
Exemplo:
No entanto, nenhum operador pode ser aplicado para BLOBs, não há expressão do tipo BLOB.
Você pode endereçar cada byte de um BLOB individualmente usando as chaves {...}. Dentro de um BLOB, os bytes são numerados de 0 a N-1, onde N é o tamanho do BLOB. Exemplo:
Como você pode endereçar todos os bytes de um BLOB individualmente, você pode realmente armazenar o que quiser em um campo ou variável BLOB.
4D oferece os seguintes comandos para trabalhar com BLOBS:
Estes comandos são descritos neste capítulo.
Adicionalmente: