Descompacta um buffer (gerado pela função Compress) recebido através do algoritmo proprietário.
Sintaxe
UnCompress( < @cBufferOut >, < @nLenghtOut >, < cBufferIn >, < nLenghtIn > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cBufferOut | caractere | Indica a variável string que receberá o buffer descompactado. | X | X |
nLenghtOut | numérico | Indica o tamanho do buffer descompactado. | X | X |
cBufferIn | caractere | Indica o buffer que será descompactado. | X |
|
nLenghtIn | numérico | Indica o tamanho do buffer compactado. | X |
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
lRet | lógico | Retorna verdadeiro (.T.), se o buffer for descompactado com sucesso; caso contrário, falso (.F.). |
Observações
- <nLengthOut> deve indicar um tamanho suficiente de bytes necessário para descompactar <cBufferIn>. Após o processamento, em caso de sucesso, este parâmetro por referência será alimentado com o tamanho real utilizado por <cBufferOut>.
- Caso o <nLenghtOut> seja inferor ao necessário para descompactar o buffer, a função retornará .F. (Falso).
- <cBufferIn> deve conter o buffer gerado pela função Compress.
- <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.
- Essa função aceita e retorna caracteres especiais (ASCII < 32 e ASCII > 128), incluindo o zero binário (ASCII 0).
- <nLenghtIn> é importante para a correta descompactação do buffer (normalmente informamos o tamanho integral de <cBufferIn>).
- Se o parâmetro <nLengthIn> for passado com valor negativo, a aplicação AdvPL é interrompida com a ocorrência de erro fatal "Packed size underflow on uncompress".
- 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 "Packed size overflow on uncompress".
Exemplos
Exemplo 1
user function uncomp1() cBufferIn := xBuffer // (Buffer gerado pela função compress) nLenghtIn := Len( cBufferIn ) // Tamanho do buffer compactado cBufferOut := "" // Variável que receberá o buffer descompactado nLenghtOut := 0 // Tamanho do buffer descompactado // Descompacta o buffer gerado pela função Compress() UnCompress( @cBufferOut, @nLenghtOut, cBufferIn, nLenghtIn ) return
Exemplo 2
user function uncomp2() 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