FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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; |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|