Compress
Compacta um buffer recebido através de algoritmo proprietário.
Sintaxe
Compress( < @cBufferOut >, < @nLenghtOut >, < cBufferIn >, < nLenghtIn > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cBufferOut | caractere | Retorna o buffer compactado, que contém os caracteres binários. | X | X |
nLenghtOut | numérico | Retorna o tamanho do buffer compactado. | X | X |
cBufferIn | caractere | Indica o buffer que será compactado. | X |
|
nLenghtIn | numérico | Indica o tamanho do buffer informado que deverá ser considerado para compactação. | X |
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
lRet | lógico | Retorna verdadeiro (.T.), se o buffer for compactado com sucesso; caso contrário, falso (.F.). |
Observações
- <cBufferOut> deve ser do tipo caracter.
- <cBufferIn> pode conter caracteres especiais, e no máximo 1MB.
- Em builds superiores a 7.00.131227A, o tamanho de <cBufferIn> pode chegar ao valor contido na chave MaxStringSize, na seção General, do arquivo ini do TOTVS | Application Server.
- Quando <cBufferIn> for muito pequeno (menor que 128 bytes), <cBufferOut> poderá ser maior que <cBufferIn>.
- Essa função aceita e retorna caracteres especiais (ASCII < 32 e ASCII > 128), incluindo o zero binário (ASCII 0).
- <cBufferOut> pode conter caracteres especiais, e não deve ser gravado diretamente em banco de dados, especialmente no TOTVS | DBAccess, EXCETO se utilizado um tipo de campo que permita conteúdo com caracteres especiais.
- Se o parâmetro <nLengthIn> for passado com valor negativo, a aplicação AdvPL é interrompida com a ocorrência de erro fatal "Unpacked size underflow on compress".
- Se o parâmetro <nLengthIn> for passado com valor maior do que o tamanho de <cBufferIn>, a aplicação AdvPL é interrompida com a ocorrência de erro fatal "Unpacked size overflow on compress".
Exemplos
Exemplo 1
user function compress1() Local cBuffer := "" Local nX := 0 // Monta linha para teste de compressão for nX := 1 to 200 cBuffer += "Linha do buffer de Teste " next nX cBufferIn := cBuffer nLenghtIn := Len( cBufferIn ) cBufferOut := "" nLenghtOut := 0 Compress( @cBufferOut, @nLenghtOut, cBufferIn, nLenghtIn ) return
Exemplo 2
user function compress2() Local cNaoComp := replicate( 'A', 1024 ) Local cComp := '', cResult := '' Local nTamNaoComp := len( cNaoComp ) Local nTamComp := 0 Local bResp bResp := compress( @cComp, @nTamComp, cNaoComp, nTamNaoComp ) If( bResp ) Alert( "Buffer Compactado - Tamanho Compactado" + str( nTamComp ) ) else Alert( "Falha ao compactar o Buffer!" ) return endif bResp := uncompress( @cResult, @nTamNaoComp, cComp, nTamComp ) If( !bResp ) Alert( "Falha ao descompactar o Buffer!" ) return endif if( cResult != cNaoComp ) Alert( "Buffer descompactado diferente do buffer original" ) else Alert( "Buffer descompactado igual ao buffer original" ) endif return
Abrangência
Advanced Protheus 6.09, Advanced Protheus 7.10, Microsiga Protheus 8.11, Protheus 10, TOTVS Application Server 10, ByYou Application Server
Veja também
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas