Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: zlib + stream komprimieren

  Alt 31. Dez 2005, 18:13
Hallo ihr Beiden,

leider ist der Einsatz der Methode CopyFrom() beim Dekomprimieren nicht möglich, da diese generische Methode die Zugriffsbedingungen des TDecompressionStream verletzt.

Delphi-Quellcode:
uses
  ZLib;

const
  BUFSIZE = 1024 * 16;

procedure CompressStream(inStream, outStream: TStream);
var
  cs: TCompressionStream;
begin
  inStream.Position := 0;
  outStream.Size := 0;
  cs := TCompressionStream.Create(clDefault, outStream);
  cs.CopyFrom(inStream, 0); // copy all
  cs.Free;
end;

procedure DecompressStream(inStream, outStream: TStream);
var
  ds: TDecompressionStream;
  bytes: Int64;
  buf: string;
begin
  inStream.Position := 0;
  outStream.Size := 0;
  ds := TDecompressionStream.Create(inStream);
  repeat
    SetLength(buf, BUFSIZE);
    SetLength(buf, ds.Read(buf[1], BUFSIZE));
    outStream.Write(buf[1], Length(buf));
  until buf = '';
  ds.Free;
end;
Silvestergrüße vom marabu
  Mit Zitat antworten Zitat