Der beste mir bekannte (besser als der von PKZIP verwendete), der auch praktikabel ist, ist bzip2.
Eine entsprechende
Unit für Delphi bekommt man bei
Torry.
Anzuwenden ist sie wie die
zlib von Delphi, nur eben mit anderen Namen und besserer komprimierung. Ähnlich wie ZIP- und die gnuzip-Komprimierung ist bzip2 für nur einen Datenstrom ausgelegt, willst du mehrere Dateien in ein Archiv packen, musst du also ähnlich wie bei PKZIP einen selbstgebastelten Header benutzen, indem du deine Daten über die Dateien schreibst.
edit: ich erinnere mich vage an einen c't-Artikel über Komprimierung, ich glaube die Namen Burrows und Wheeler fielen dort. Danach könntest du mal googlen, ob es fertige Implementationen gibt, weiß ich nciht mehr, ich weiß auch nicht mehr genau was es war (könnte mich aber auf Anfrage in den Dschungel meines Regales begeben...)
edit2: Gerade getestet mit einer knapp 100kb kleine, einfach gestrickten BMP-Datei:
- GNUZip: 3046 kb
-
zLib: 3136 kb
- RAR: 3305 kb (Multimedia-Kompression dekativiert)
- bzip2: 2202 kb