Einzelnen Beitrag anzeigen

ToZie

Registriert seit: 17. Feb 2004
43 Beiträge
 
Delphi 10.3 Rio
 
#1

Stream komprimieren / dekomprimieren

  Alt 27. Feb 2013, 10:15
Delphi-Version: 5
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
  Mit Zitat antworten Zitat