Função: UnCompress
Descompacta um buffer (gerado pela função Compress()) recebido através do algoritmo proprietário.
UnCompress ( < @cBufferOut >, < @nLengthOut >, < cBufferIn >, < nLengthIn > ) --> lRet
Nome | Tipo | Descrição | Obrigatório | Referência |
cBufferOut | Caracter | Indica a variável string que receberá o buffer descompactado. | X | X |
nLengthOut | Numérico | Indica o tamanho do buffer descompactado. Deve indicar um tamanho suficiente de bytes necessário para descompactar o buffer compactado ( 3º parâmetro ) . Apos o processamento, em caso de sucesso, este parâmetro por referência será alimentado com o tamanho real utilizado do buffer descompactado. | X | X |
cBufferIn | Caracter | Indica o buffer compactado pela função Compress(), a ser descompactado. | X | |
nLengthIn | Numérico | Indica o tamanho do buffer compactado. Essa informação é importante para a correta descompactação do buffer -- normalmente informamos o tamanho integral do buffer especificado no 3º parâmetro. | X |
lRet
- (logico)
- Retorna verdadeiro (.T.), se o buffer for descompactado com sucesso; caso contrário, falso (.F.).
- Essa função aceita e retorna caracteres especiais ( ASCII < 32 e ASCII > 128 ) de vários tipos, incluindo zero binário.
- Caso o segundo parametro seja inferor ao necessário para descompactar o buffer, a função retornará .F . ( Falso ).
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".
//Exemplo 1
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 )
///////////////////////////////////////////////////////////////////////////////////////////////
//Exemplo 2
user function TSTComp
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 .t.
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