Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   UnZIP basado en /DotNetZip (https://www.clubdelphi.com/foros/showthread.php?t=91985)

ppb 19-06-2017 16:47:32

UnZIP basado en /DotNetZip
 
Hola compañeros ,
estoy atascado con un tema de compresión/descompresión , más descompresión;
Voy allá , a la aplicación que estoy desarrollando llega una cadena , primero comprimida en zip
y luego codificada en base64 , estos pasos son realizados por una aplicación externa ,
para la compresión de dicha cadena se ha usado la compresión ZIP mediante el componente de .NET DotNetZip
v1.10.1(https://www.nuget.org/packages/DotNetZip) . Bueno el caso es que mi aplicación tiene que sacar el texto en claro
, en el decodebase64 no hay ningún problema , pero a la hora de hacer el unzip no encuentro la solución.
La cadena no viene de un fichero , es una lectura de un código de barras tipo 2D (417 FDF).

Alguien se ha pegado con algo parecido ?

Gracias por vuestra ayuda de antemano.
Saludos cordiales.

Neftali [Germán.Estévez] 20-06-2017 13:59:12

Cita:

Empezado por ppb (Mensaje 518384)
La cadena no viene de un fichero , es una lectura de un código de barras tipo 2D (417 FDF).

A mi personalmente no me queda claro lo que comentas. Explicas todo, pero esto que te comento no lo acabo de entender.
¿Cómo llega a tu programa esa cadena?
¿Alguien lee el código de barras, hare un ZIP (será de un fichero) y luego usa Base64? ¿Esa cadena es la que te llega a ti?

Si es así, decodifica el base64, graba el ficheroi (ojo à la codificación), descomprime en otro fichero y lee el contenido.

ppb 26-06-2017 12:47:23

Hola Neftali,

la lectura es a través de un lector de código de barras , la cadena que llega
está construida "TextoClaro->ZIP->codebase64" y para extraer "decodebase64->Unzip-TextoClaro"
gracias por la sugerencia , he probado a usar :
- "system.zlib" con ZDecompressStr , pero devuelve "data error" , usando AnsiString;
- He grabado el en un fichero ( bytes ) pero el fichero no es reconocido como zip.

No he probado con la funciones de "system.zip" , tengo que reconocer que
tampoco se la diferencia entre zip y zlib.

Gracias por tu ayuda.

ppb 26-06-2017 17:22:21

Solucionado :

Código Delphi [-]
function Unzip(aContent: TArray): string;
var
  DecompressionStream: TDecompressionStream;
  Compressed: TBytesStream;
  Decompressed: TStringStream;
begin
    Compressed := TBytesStream.Create(aContent);
    try
      DecompressionStream := TDecompressionStream.Create(Compressed, -8);
      try
        Decompressed := TStringStream.Create('', TEncoding.UTF8);
        try
          Decompressed.LoadFromStream(DecompressionStream);
          Result := Decompressed.DataString;
        finally
          Decompressed.Free;
        end;
      finally
        DecompressionStream.Free;
      end;
    finally
      Compressed.Free;
    end;
end;

Gracias.


La franja horaria es GMT +2. Ahora son las 10:04:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi