Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2003
a2jcf a2jcf is offline
Miembro
 
Registrado: jul 2003
Posts: 10
Poder: 0
a2jcf Va por buen camino
Unhappy TDecompressionStream

Hola,

Por favor, ayuda!!!

Estoy utilizando el componente de Delphi ZLib para comprimir y descomprimir y me da error.
Comprimo aparentement sin ningún error, pero al descomprimir del stream con TDecompressionStream, me da un error -3 (Data error).

Alguién sabe que pasa???
Algún ejemplo de su utilización?

Gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 19-08-2003
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Smile

Hola.

Aquí te envío un ejemplo con los procedimientos ExpandStream y CompressStream que los encontré en una búsqueda que hice por la red (creo que son de un miembro del Team B o algo así, unos expertos en Delphi).

También los procedimientos Descomprime_ZLib y Comprime_ZLib que tienen las llamadas a los procedimientos anteriores. Son de un programa que hice y han sido ligeramente modificados para quitarle lo que puede distraer de tu consulta. Por ello debes tener en cuenta que puede haber algún pequeño error.

Suerte.

Ramón.






procedure ExpandStream(inpStream,outStream: TStream);
var InpBuf,OutBuf: Pointer;
var OutBytes,sz: integer;
begin
InpBuf := nil;
OutBuf := nil;
sz := inpStream.size-inpStream.Position;
if sz > 0 then try
GetMem(InpBuf,sz);
inpStream.Read(InpBuf^,sz);
DecompressBuf(InpBuf,sz,0,OutBuf,OutBytes);
outStream.Write(OutBuf^,OutBytes);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
end;
outStream.Position := 0;
end;


procedure CompressStream(inpStream,outStream: TStream);
var InpBuf,OutBuf: Pointer;
var InpBytes,OutBytes: integer;
begin
InpBuf := nil;
OutBuf := nil;
try
GetMem(InpBuf,inpStream.size);
inpStream.Position := 0;
InpBytes := inpStream.Read(InpBuf^,inpStream.size);

CompressBuf(InpBuf,InpBytes,OutBuf,OutBytes);

outStream.Write(OutBuf^,OutBytes);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
end;
end;

//-----------------------------------------------------------------------


Procedure Comprime_ZLib ( aaa : String; bbb : String ) ;
VAR
ms1, ms2 : TMemoryStream ;
Begin // aaa : nombre archivo; bbb: Extensión

ms1 := TMemoryStream.Create ;
ms2 := TMemoryStream.Create ;

Try
ms1.LoadFromFile ( aaa + bbb ) ;
CompressStream ( ms1, ms2 ) ; // <<=================
ms2.savetofile (aaa + 'ext' ) ;

Finally
ms2.Free ;
ms1.free ;
end;

end;



Procedure Descomprime_ZLib ( aaa : String; bbb : String ) ;
VAR
ms3, ms4 : TMemoryStream ;

Begin // aaa : nombre archivo; bbb: Extensión

ms3 := TMemoryStream.Create ;
ms4 := TMemoryStream.Create ;

Try

ms3.LoadFromFile ( aaa + bbb ) ;
ExpandStream ( ms3, ms4 ) ;

ms4.SaveToFile ( AAA + 'Ext' ) ;

Finally
ms3.Free ;
ms4.Free ;
end;

end;

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:39:05.


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
Copyright 1996-2007 Club Delphi