Hallo,
irgendwie hab ich ein Problem mit dem Verständnis der Funktion von TCompressionStream / TDecompressionStream der
zlib. Ich versuche folgendes:
Code:
function compressStream(smIn, smOut: TStream; level: TCompressionLevel = clDefault): int64;
var
smCmp: TCompressionStream;
begin
try
smCmp:=TCompressionStream.Create(level, smOut);
result:=smCmp.CopyFrom(smIn, 0);
finally
smCmp.Free;
end;
end;
function decompressStream(smIn, smOut: TStream): int64;
var
smDec: TDeCompressionStream;
begin
try
smIn.Position:=0;
smDec:=TDeCompressionStream.Create(smIn);
result:=smOut.CopyFrom(smDec, 0);
finally
smDec.Free;
end;
end;
procedure Test;
var
smIn, smOut, smDec: TMemoryStream;
begin
try
smIn:=TMemoryStream.Create;
smOut:=TMemoryStream.Create;
smDec:=TMemoryStream.Create;
smIn.ReadFromFile('irgendwas.txt');
compressStream(smIn, smOut);
decompressStream(smOut, smDec);
finally
smIm.Free;
smOut.Free;
smDec.Free;
end;
end;
Beim dekomprimieren tritt bei smOut.CopyFrom(smDec, 0) eine 'Ungültige Stream Operation' auf, weiss jemand warum?
Vielen Dank
Torsten