Wenn clear nicht vorhanden ist kann man auch einfach mit dem Property-Size die Größe auf 0 setzen.
Oder was in den meisten Fällen performanter ist - die Größe gleich auf den richtigen Wert setzen. In diesem Fall also:
Delphi-Quellcode:
procedure CompressStream(ms: TStream);
var
zc: TCompressionStream;
ms1: TMemoryStream;
begin
ms1 := TMemoryStream.Create;
try
zc := TCompressionStream.Create(clMax, ms1);
try
zc.CopyFrom(ms, 0);
finally
zc.free;
end;
lRateOfCompression.Caption := Format('%.3f', [zc.CompressionRate]);
ms.size := ms1.size;
ms.position := 0;
ms1.postion := 0;
ms.CopyFrom(ms1, ms1.size);
finally
ms1.free;
end;
end;
Zitat:
Weshalb Funktioniert dann...nicht?
"Nicht funktionieren" ist eine sehr schlechte Fehlerbeschreibung. Kommt eine Fehlermeldung? Passiert einfach etwas anderes als erwartet? Wenn ja: was erwartest du und was passiert tatsächlich?