Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 3 Próxima »

Função: UnCompress

Descompacta um buffer (gerado pela função Compress()) recebido através do algoritmo proprietário.

UnCompress ( < @cBufferOut >, < @nLengthOut >, < cBufferIn >, < nLengthIn > ) --> lRet

 

NomeTipoDescriçãoObrigatórioReferência
cBufferOutCaracterIndica a variável string que receberá o buffer descompactado.XX
nLengthOutNuméricoIndica 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.XX
cBufferInCaracterIndica o buffer compactado pela função Compress(), a ser descompactado.X 
nLengthInNuméricoIndica 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

 

  • Sem rótulos