gibt TDecompressionStream den aStream vielleicht frei?
ich hab es jetzt mal so versucht unb scheitere schon beim 1. CopyFrom, also beim Komprimieren
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes,
ZLib;
{Dekompremiert den Stream}
procedure DecompressStream(aStream: TStream);
var
zc: TDecompressionStream;
ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
try
zc := TDecompressionStream.Create(aStream);
try
ms.CopyFrom(zc, 0);
finally
zc.Free;
end;
aStream.Size := 0;
aStream.CopyFrom(ms, 0);
finally
ms.Free;
end;
end;
{Kompremiert den Stream}
procedure CompressStream(aStream: TStream);
var
zc: TCompressionStream;
ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
try
zc := TCompressionStream.Create(clDefault, ms);
try
zc.CopyFrom(aStream, 0);
finally
zc.Free;
end;
aStream.Size := 0;
aStream.CopyFrom(ms, 0);
finally
ms.Free;
end;
end;
Var
M: TMemoryStream;
begin
M := TMemoryStream.Create;
M.
Write(M, 4);
// irgendwas einlesen, damit was drin ist
CompressStream(M);
DecompressStream(M);
end.
[edit] Fehler im CompressStream behoben (Source und Dest sozusagen vertauscht) geht aber dennoch nicht
[edit2] OK, komprimieren geht nun