Função de compactação de strings, alguém informa qual lib?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Função de compactação de strings, alguém informa qual lib?

Mensagem 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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Função de compactação de strings, alguém informa qual lib?

Mensagem 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==
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Função de compactação de strings, alguém informa qual lib?

Mensagem por Kapiaba »

Juro que não entendi Rochinha...
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função de compactação de strings, alguém informa qual lib?

Mensagem por JoséQuintas »

Dá uma tentada com:

Código: Selecionar todos

hbmk2 -find zip
hbmk2 - find compr
Ou... no harbourdoc, opção compactar/zip ou algo assim.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Função de compactação de strings, alguém informa qual lib?

Mensagem por Daniel »

Ola

o CharPack() só funciona com sequencia de letras iguais

Código: Selecionar todos

	mVariavel   := "aaaaaaaaaabbbbbbbbbbbbbbbbbbbcccccccccccccccccdddddddddddddddddddddffffffffffffffffff"
	mCompactada := CharPack( mVariavel )
   ? mCompactada 
   ? CharUnPack(mCompactada)
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Função de compactação de strings, alguém informa qual lib?

Mensagem 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,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Função de compactação de strings, alguém informa qual lib?

Mensagem 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í.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Função de compactação de strings, alguém informa qual lib?

Mensagem 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
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder