https://foro.gambas-es.org/viewtopic.php?f=4&t=6835
-----------------------------------
Grandamakulo
Miercoles, 31 Enero 2018, 12:55

Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria [SOLUCIONADO]
-----------------------------------
[align=justify]Buenos días a todos.
Mi intención es cargar en memoria un archivo con extensión .gz —que en teoría puede decomprimirse con este componente—, decomprimirlo y pasarlo a una cadena, ya que se trata de archivos de texto plano.
¿Alguien tiene experiencia con tal herramienta?
Un saludo[/align]


-----------------------------------
vuott
Miercoles, 31 Enero 2018, 21:00

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria
-----------------------------------
Hace falta utilizar la Clase "[i]Uncompress[/i]" del Componente [i]gb.compress[/i] .

[i]Exemplum[/i] decomprimiendo un archivo.gz :

[code linenumbers=false syntax=gambas]Public Sub Main()

  Dim unc As New Uncompress
    
   With unc
     .Type = "zlib"
     .File("/ruta/del/archivo.gz", "/ruta/del/futuro/archivo/decomprimido")
   End With

End[/code]

http://gambaswiki.org/wiki/comp/gb.compress


-----------------------------------
Grandamakulo
Miercoles, 31 Enero 2018, 22:40

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria
-----------------------------------
¡¡Perfecto Vuott!!
Pero, ¿sabrías por qué no me funciona el siguiente código?:

 [code linenumbers=false syntax=gambas] Dim Ruta As String
  Dim fArch As File
  Dim tArch As String
  Dim tDes As String
  Dim uComp As New Compress
  
  'uComp.Type = "bzlib2"
  uComp.Type = "zlib"
  Ruta = "fk6_3.dat.gz"
  fArch = Open Ruta For Read
  Read #fArch, tArch, Lof(fArch)
  Close #fArch
  tDes = uComp.String(tArch)[/code]

¡Muchas gracias!


-----------------------------------
vuott
Miercoles, 31 Enero 2018, 23:04

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria
-----------------------------------
¿Cuál es el problema?


-----------------------------------
Grandamakulo
Miercoles, 31 Enero 2018, 23:07

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria
-----------------------------------
[quote user="vuott" post="41313"]¿Cuál es el problema?[/quote]
Disculpa, que no lo he dicho.
Pues que el resultado no es la cadena decomprimida, sino un galimatías similar al original


-----------------------------------
vuott
Miercoles, 31 Enero 2018, 23:11

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria
-----------------------------------
[quote user="Grandamakulo" post="41314"]...el resultado no es la cadena decomprimida[/quote]

...porque usaste la Clase "[i]Compress[/i]" ?   :?: 

[code linenumbers=false syntax=gambas]Dim uComp As New Compress[/code]

Mira que la Clase "[i]Compress[/i]" sirve para [i]comprimir[/i] !


-----------------------------------
Grandamakulo
Miercoles, 31 Enero 2018, 23:20

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria
-----------------------------------
[quote user="vuott" post="41315"][quote user="Grandamakulo" post="41314"]...el resultado no es la cadena decomprimida[/quote]

...porque usaste la Clase "[i]Compress[/i]" ?   :?: 

[code linenumbers=false syntax=gambas]Dim uComp As New Compress[/code]

Mira que la Clase "[i]Compress[/i]" sirve para [i]comprimir[/i] ![/quote]

¡Lessschesss! Estoy gilimusi. :mrorange: 
En cualquier caso, me sigue pasando lo mismo  :(

Solucionado... otro error imbécil
Mucash gracias


-----------------------------------
vuott
Miercoles, 31 Enero 2018, 23:26

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria [SOLUCIONADO]
-----------------------------------
Mira, pero, que haciendo un test con la Clase "Uncompress" y su Método [i].String( )[/i], obtengo un error " [i]Invalid compress string[/i] " !

La guía dice que " [i]Must be a valid compressed string.[/i] ".
Por ahora no se lo que significa exactamente.   :neutral:


-----------------------------------
Grandamakulo
Jueves, 01 Febrero 2018, 09:37

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria [SOLUCIONADO]
-----------------------------------
[quote user="vuott" post="41318"]Mira, pero, que haciendo un test con la Clase "Uncompress" y su Método [i].String( )[/i], obtengo un error " [i]Invalid compress string[/i] " !

La guía dice que " [i]Must be a valid compressed string.[/i] ".
Por ahora no se lo que significa exactamente.   :neutral:[/quote]

¡Ahí va!, pues a mí me funciona perfectamente ahora. Y lo bueno es que no tengo que generar un archivo temporal.
¿En qué condiciones te da el error? ¿El tipo de librería es correcto?


-----------------------------------
tercoIDE
Jueves, 01 Febrero 2018, 11:29

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria [SOLUCIONADO]
-----------------------------------
[quote user="Grandamakulo" post="41319"][quote user="vuott" post="41318"]Mira, pero, que haciendo un test con la Clase "Uncompress" y su Método [i].String( )[/i], obtengo un error " [i]Invalid compress string[/i] " !

La guía dice que " [i]Must be a valid compressed string.[/i] ".
Por ahora no se lo que significa exactamente.   :neutral:[/quote]

¡Ahí va!, pues a mí me funciona perfectamente ahora. Y lo bueno es que no tengo que generar un archivo temporal.
¿En qué condiciones te da el error? ¿El tipo de librería es correcto?[/quote]

Podria ser que el metodo string puede contener alguna conversion de caracteres a algo legible, y las compresiones son en binario.
No estoy 100% seguro. Pero para que agregar codigo extra, si Gambas lo puede resolver solo?


-----------------------------------
Grandamakulo
Jueves, 01 Febrero 2018, 14:15

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria [SOLUCIONADO]
-----------------------------------
Perdona, Terco, pero creo que no te entendí: ¿qué es lo que te da resuelto gambas?


-----------------------------------
tercoIDE
Jueves, 01 Febrero 2018, 15:29

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria [SOLUCIONADO]
-----------------------------------
[quote user="Grandamakulo" post="41325"]Perdona, Terco, pero creo que no te entendí: ¿qué es lo que te da resuelto gambas?[/quote]

La descompresion del archivo. No hace falta abrirlo con Open:
[code linenumbers=false syntax=gambas]
  Ruta = "fk6_3.dat.gz"
  fArch = Open Ruta For Read
  Read #fArch, tArch, Lof(fArch)
  Close #fArch
  tDes = uComp.String(tArch)[/code]

con esto alcanza

[code linenumbers=false syntax=gambas]Dim Cp As New Uncompress
Ruta = "fk6_3.dat.gz"
Ruta2 = "fk6_3.dat"
Cp.Type = "zlib"
Cp.File(ruta, ruta2)[/code]



Si necesitas trabajar con areas de memoria, es otra cosa.


-----------------------------------
Grandamakulo
Jueves, 01 Febrero 2018, 16:00

Re: Gb.compress: Uso Para Descomprimir Archivos Binarios En Memoria [SOLUCIONADO]
-----------------------------------
[quote user="tercoIDE" post="41329"][quote user="Grandamakulo" post="41325"]Perdona, Terco, pero creo que no te entendí: ¿qué es lo que te da resuelto gambas?[/quote]

La descompresion del archivo. No hace falta abrirlo con Open:
[code linenumbers=false syntax=gambas]
  Ruta = "fk6_3.dat.gz"
  fArch = Open Ruta For Read
  Read #fArch, tArch, Lof(fArch)
  Close #fArch
  tDes = uComp.String(tArch)[/code]

con esto alcanza

[code linenumbers=false syntax=gambas]Dim Cp As New Uncompress
Ruta = "fk6_3.dat.gz"
Ruta2 = "fk6_3.dat"
Cp.Type = "zlib"
Cp.File(ruta, ruta2)[/code]



Si necesitas trabajar con areas de memoria, es otra cosa.[/quote]

¡Ah!, vale. 
Sí, pero, como he comentado, prefiero no tener que montar un archivo temporal.
En cualquier caso, muchas gracias por tu sugerencia.


