4D v12.4COMPRESS BLOB |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v12.4
COMPRESS BLOB
|
COMPRESS BLOB ( BLOB {; compressão} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
BLOB | BLOB |
![]() |
BLOB a ser comprimido | |||||
compressão | Inteiro longo |
![]() |
Se não se omite: 1, compressão máxima possível 2, velocidade de compressão máxima | |||||
O comando COMPRESS BLOB comprime o BLOB blob usando o algoritmo de compressão interno de 4D. Este comando só comprime o BLOB cujo tamanho é superior a 255 bytes.
O parâmetro de compressão opcional permite definir a forma como o BLOB é compactado:
4D oferece as seguintes constantes pré-definidas:
Constante | Tipo | Valor | Comentário |
Compact compression mode | Inteiro longo | 1 | Comprimido tanto quanto possível (á custa da velocidade das operações de compressão e descompressão). Método padrão. |
Fast compression mode | Inteiro longo | 2 | Comprimido tão rápido quanto possível (e será descomprimido tão rápido quanto possível), à custa da taxa de compressão (o BLOB comprimido será maior). |
Após a chamada, a variável OK é definida como 1 se o BLOB foi bem compactado. Se a compressão não pôde ser executada, a variável OK é definida como 0. Se a compressão não pôde ser realizada devido à falta de memória ou porque o real tamanho do blob é menor que 255 bytes, nenhum erro é gerado e o método continua a sua execução.
Nos demais casos (isto é, o BLOB estiver danificado), o erro -10600 é gerado. Esse erro pode ser tratado usando o comando ON ERR CALL.
Depois que um BLOB foi compactado, você pode expandi-lo usando o comando EXPAND BLOB.
Para detectar se o BLOB foi compactado, use o comando BLOB PROPERTIES.
Advertência: O BLOB comprimido ainda é um BLOB, então não há nada para impedi-lo de modificar o seu conteúdo. No entanto, se você fizer isso, o comando EXPAND BLOB não será capaz de descompactar o BLOB corretamente.
Este exemplo testa se o BLOB vxMeuBlob é comprimido e, se não for, comprime-o:
BLOB PROPERTIES(<span class="rte4d_prm">vxMeuBlob</span><gen9>;$vlComprimido;$vlTamanhoExpandido;$vlTamanhoAtual)
If($vlComprimido=Is not compressed)
COMPRESS BLOB(vxMeuBlob)
End if
</gen9>
Note, no entanto, que se você aplicar COMPRESS BLOB para um BLOB já compactado, o comando detecta-o e não faz nada.
Este exemplo permite que você selecione um documento e, em seguida, comprima-o:
$vhDocRef :=Open document("")
If(OK=1)
CLOSE DOCUMENT($vhDocRef)
DOCUMENT TO BLOB(Document;vxBlob)
If(OK=1)
COMPRESS BLOB(vxBlob)
If(OK=1)
BLOB TO DOCUMENT(Document;vxBlob)
End if
End if
End if
A variável OK é definida como 1 se o BLOB foi compactado com sucesso, caso contrário, ela é definido como 0.
Produto: 4D
Tema: BLOB
Número
534
Modificado: 4D v6.5.3
Compression, blob compression***