In den TCompressionStream kannst du nur schreiben und nicht lesen!
Du versuchst mit
result.CopyFrom(xx, cs.Size);
cs.Size-Bytes vom TCompressionStream xx nach result zu kopieren...
Richtig währe da:
Delphi-Quellcode:
function komprimiere(input:TStream):tmemorystream;
var
xx: TCompressionStream;
begin
result := tmemorystream.create;
xx := TCompressionStream.Create(clmax, result);
xx.CopyFrom(input, input.Size);
xx.Free; // !! NIcht vergessen, da der interne Buffer des TCompr.Streams sonst nicht geflusht wird
result.position:=0;
end;