Página 1 de 1
Função de compactação de strings, alguém informa qual lib?
Enviado: 08 Nov 2016 22:52
por rochinha
Amiguinhos,
Eu uso o Harbour 45.0 Flex e recentemente precisei armazenar conteúdo caractere em campo na minha tabela de NATUREZAS. Na verdade os famosos textos contendo os dispositivos legais.
Cheguei a criar um campo com 400 caracteres de tamanho, mas é inviável este uso pois teria uma demanda enorme de atualização em clientes.
Usar campo MEMO também não é minha solução.
A idéia é não mexer nas tabelas e sim no código fonte do sistema para colocar compactação de strings.
Se alguém tiver ai uma biblioteca compatível, um snipet, wrappler, codigo xBase puro ou até um pragma, já ajuda nesta empreitada.
Eu até tenho coisas do tipo, mas o fator RAW danificou minhas possibilidades. 25 anos de pesquisa, em um hd travado.
@braços.
Função de compactação de strings, alguém informa qual lib?
Enviado: 16 Nov 2016 13:01
por rochinha
Amiguinhos,
Não sei se me fiz entender sobre minha necessidade na postagem anterior.
Aparentemente encontrei o que eu precisava,
CharPack e
CharUnPack
E porque digo "aparentemente"?
O fato é que elas não funcionam. Eu passo o conteúdo que quero compactar, um texto em memória ou nome de arquivo com o texto e o retorno destas funções é exatamente igual ao passado.
Quero que funcione como o ZIP, ou seja, eu passo um texto longo e compacto para caber em um pequeno espaço. Mas não quero usar arquivo externo para o processo, quero que ocorra em memória.
Exemplo:
Código: Selecionar todos
...
mVariavel := "Este é um texto contendo algo muito longo que gostaria de compactar e armazena-lo em um campo caracter"
...
mCompactada := CharPack( mVariavel )
...
? mCompactada
LKAS87432BFOVXIYDI62437FH==
Função de compactação de strings, alguém informa qual lib?
Enviado: 16 Nov 2016 15:21
por Kapiaba
Juro que não entendi Rochinha...
Função de compactação de strings, alguém informa qual lib?
Enviado: 16 Nov 2016 17:44
por JoséQuintas
Dá uma tentada com:
Ou... no harbourdoc, opção compactar/zip ou algo assim.
Função de compactação de strings, alguém informa qual lib?
Enviado: 17 Nov 2016 08:16
por Daniel
Ola
o CharPack() só funciona com sequencia de letras iguais
Código: Selecionar todos
mVariavel := "aaaaaaaaaabbbbbbbbbbbbbbbbbbbcccccccccccccccccdddddddddddddddddddddffffffffffffffffff"
mCompactada := CharPack( mVariavel )
? mCompactada
? CharUnPack(mCompactada)
Função de compactação de strings, alguém informa qual lib?
Enviado: 17 Nov 2016 10:01
por rossine
Bom dia Rochinha,
Veja se o exemplo abaixo é o que você precisa:
Código: Selecionar todos
// Exemplo para ZIPAR e CRIPTOGRAFAR uma string.
function main
local cStr := replicate( "1234567890", 10 )
local cKey := "MYPASSWORD"
cls
? len(cStr)
? cStr
cStr := hb_zcompress( cStr )
? ""
? len(cStr)
? cStr
cStr := sx_encrypt( cStr, cKey )
? ""
? len(cStr)
? cStr
cStr := sx_decrypt( cStr, cKey )
? ""
? len(cStr)
? cStr
cStr := hb_zuncompress( cStr )
? ""
? len(cStr)
? cStr
return NIL
Tenhos estas duas funções que uso para Encryptar / Descryptar meus arquivos ".HRB" e outros.
Código: Selecionar todos
********************************
function HRB_SaveToFileEncrypted( cEncFileName, cKey, cHrbBody )
********************************
if !empty( cHrbBody )
cHrbBody := hb_zcompress( cHrbBody )
cHrbBody := sx_encrypt( cHrbBody, cKey )
hb_memowrit( cEncFileName, cHrbBody )
endif
return NIL
**********************************
function HRB_LoadFromFileEncrypted( cFile, cKey )
**********************************
local cHrbBody
cHrbBody := hb_memoread( cFile )
cHrbBody := sx_decrypt( cHrbBody, cKey )
cHrbBody := hb_zuncompress( cHrbBody )
return cHrbBody
Abraço,
Função de compactação de strings, alguém informa qual lib?
Enviado: 23 Nov 2016 05:07
por rochinha
Amguinhos,
Valeu Kapiaba, JoseQuintas, Daniel, Rossine e todos os outros amigos que olharam mas não entenderam.
Quanto a função CharPack realmente ela não me serviria.
A bibliotecas que o Quintas compilou me deram base para pesquisa.
Quanto as funções hbZCompress e hbZUncompress elas me servirão pois poderei compactar/descompactar em memória.
Valeu, é isso aí.
Função de compactação de strings, alguém informa qual lib?
Enviado: 04 Out 2018 14:49
por rochinha
Amiguinhos,
O intento foi conseguido.
A resposta está no tópico
compressão/des-compressão de string e texto de/para Base64