Monday 19th January at 6 for 6:15pm start.
Compression Techniques in Delphi – A discussion on members’ experience with various compression options available for Delphi.
This month four different compression components were presented and by four different presenters. As is typical, each of the solutions discussed have their own strengths and weaknesses. Each is summarised below:
ZLIB presented by Ian Krigsman.
ZLIB is included with Delphi as a native VCL component with source code. ZLIB only supports the ZLIB format / algorithm. It compiles natively into the application with no external dependencies. Simple to use with only a few methods to be concerned with. (demo code)
Abbrevia presented by Brian Watson
Abbrevia (formerly by TurboPower) is Brian’s compression component of choice. It is now open source and a 64bit version is also available. It is free and again compiles natively into the application with no external dependencies. Abbrevia supports common formats such as ZIP, TAR and CAB. Again simple to use with only a few methods to be concerned with. (Brian’s Presentation PDF, StepZipUtils.Pas)
TZipFile presented by Richard King
TZipFile is again included with Delphi since XE2 as a native VCL component with sources. It supports a number of file formats however there are some well-known bugs that may impact on its successful use. Again simple to use with only a few methods to be concerned with. (demo code)
7Zip presented by John McDonald
Use of the popular 7 Zip compression engine is possible in Delphi with additional units from the JCL (Jedi Component Library). Of all the compression components presented 7 Zip provides the most extensive range of compress and un-compress formats. There is however no documentation other than source code comments and a runtime library (7 Zip libraries) need to be either distributed or downloaded onto the client machine.
Some of the other features of interest to John were that 7 Zip supports UTC dates for the file dates, large volume support through spanning and different compression levels on some file formats. (Notes)
Conclusion
As a group the consensus was as follows:
- For compression that was only to be compressed and decompressed by the one system or application set then ZLIB is suitable.
- For compression that required files to be from third parties or delivered to third parties than Abbrevia is the preferred if an open source solution is acceptable, or TZipfile if the short comings of the component are not a barrier.
- The additional effort and complexity of deployment with 7 Zip was considered only worthwhile if the required compression format(s) were not supported in the previous solutions.
Review provided By Jason Tolley