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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas