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