Clipper On Line • Ver Tópico - Função de compactação de strings, alguém informa qual lib?

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

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

Moderador: Moderadores

 

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

Mensagempor rochinha » 08 Nov 2016 21:52

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

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

Mensagempor rochinha » 16 Nov 2016 12:01

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:
...
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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

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

Mensagempor Kapiaba » 16 Nov 2016 14:21

Juro que não entendi Rochinha...
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

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

Mensagempor JoséQuintas » 16 Nov 2016 16:44

Dá uma tentada com:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

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

Mensagempor Daniel » 17 Nov 2016 07:16

Ola

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

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

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar de usuário

Daniel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 13 Ago 2003 22:42
Cidade/Estado: Apucarana - PR
Curtiu: 0 vez
Mens.Curtidas: 36 vezes

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

Mensagempor rossine » 17 Nov 2016 09:01

Bom dia Rochinha,

Veja se o exemplo abaixo é o que você precisa:


// 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.

********************************
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.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

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

Mensagempor rochinha » 23 Nov 2016 04:07

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

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

Mensagempor rochinha » 04 Out 2018 14:49

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Bing [Bot] e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro