Wenn du einfach nur "irgendwas komprimieren" möchtest hat mir persönlich immer die mitgelieferte
Unit System.Zip
gereicht. Handelsübliche ZIP-Kompression in Dateien oder in den Speicher, Dateien rein und raus, alles ganz einfach.
Beispiel:
Delphi-Quellcode:
interface uses
System.Classes,
System.SysUtils,
System.Zip,
System.IoUtils;
procedure compressStuff();
const
exampleData: TBytes = [1,2,3];
var
inputStream: TStream;
zipFile: TZipFile;
outputStream: TBytesStream;
begin
inputStream := nil; zipFile := nil; outputStream := nil;
try
inputStream := TBytesStream.Create(exampleData);
outputStream := TBytesStream.Create();
zipFile := TZipFile.Create();
zipFile.Open(outputStream, TZipMode.zmWrite);
zipFile.Add(inputStream, 'compressedInput.dat');
TFile.WriteAllBytes('x:\myZipfile.zip', outputStream.Bytes);
finally
inputStream.Free(); zipFile.Free(); outputStream.Free();
end;
end;