Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/3279126062824/newLayouttecnologia.css
Portuguese

Pagetitle
UnCompress

...

...

...

UnCompress

Descompacta

...

um

...

buffer

...

(gerado

...

pela

...

função

...

Compress

...

)

...

recebido

...

através

...

do

...

algoritmo

...

proprietário.

Sintaxe

Bloco de código
collapsefalse
UnCompress( <
@cBufferOut>
 @cBufferOut >, <
@nLengthOut>
 @nLenghtOut >, <
cBufferIn>
 cBufferIn >, <
nLengthIn> ) --> lRet
 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

Bloco de código
themeEclipse
languagecpp
titleExemplo 1
linenumberstrue
collapsefalse
user function uncomp1()
  cBufferIn
  • Caso o segundo parametro seja inferor ao necessário para descompactar o buffer, a função retornará .F . ( Falso ) 
  • //Exemplo 1cBufferIn
      := xBuffer            // (Buffer gerado pela função compress)
      nLenghtIn  := Len( cBufferIn )   // Tamanho do buffer compactado
     
    compactadocBufferOut
     cBufferOut := ""                 // Variável que receberá o buffer 
    descompactadonLenghtOut
    descompactado
      nLenghtOut := 0                  // Tamanho do buffer descompactado
      
      // Descompacta o buffer gerado pela função Compress()
      UnCompress(
    cBufferOut
     @cBufferOut, 
    nLenghtOut
    @nLenghtOut, cBufferIn, nLenghtIn )
    return
    
    Bloco de código
    themeEclipse
    languagecpp
    titleExemplo 2
    linenumberstrue
    collapsefalse
    user function uncomp2()
      
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Exemplo 2user 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
    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.
    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