Árvore de páginas

Versões comparadas

Chave

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

Pagetitle
Compress
Compress

...

Função: Compress

Compacta

...

um

...

buffer

...

recebido

...

através

...

de

...

algoritmo

...

proprietário.

Sintaxe

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

Bloco de código
themeEclipse
languagecpp
titleExemplo 1
linenumberstrue
collapsefalse
user function compress1()
  Local
especiais 
 

 

//Exemplo 1Local
 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
@cBufferOut, 
nLenghtOut
@nLenghtOut, cBufferIn, nLenghtIn )
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Exemplo 2user function TSTComp

return
Bloco de código
themeEclipse
languagecpp
titleExemplo 2
linenumberstrue
collapsefalse
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
else
    
Alert( "Falha ao compactar o Buffer!" )

    
return

  endif
  
  
bResp := uncompress( @cResult, @nTamNaoComp, cComp, nTamComp )
  
If( !bResp )

    
Alert( "Falha ao descompactar o Buffer!" )
    
return
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