Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
|
Pagetitle | ||||
---|---|---|---|---|
|
Função: UnCompress
Descompacta
...
um
...
buffer
...
(gerado
...
pela
...
função
...
Compress
...
)
...
recebido
...
através
...
do
...
algoritmo
...
proprietário.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
UnCompress( < @cBufferOut >, <@nLengthOut @nLenghtOut >, < cBufferIn >, <nLengthIn nLenghtIn > )--> lRet
|
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
user function uncomp1()
//Exemplo 1cBufferIn := 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 @cBufferOut,nLenghtOut @nLenghtOut, cBufferIn, nLenghtIn ) return |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
user function uncomp2()
/////////////////////////////////////////////////////////////////////////////////////////////// //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.
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
...