ZipTools-for-Clarion 
Update (v1.2.0, released 2025-09-24): Breaking Changes
Since the original v1.0.0 release yesterday, we’ve shipped v1.1.0 and v1.2.0.
- v1.1.0 – added dynamic DLL loading, Clarion template integration, and install script.
- v1.2.0 – renamed
CZipClass→ZipToolsClassand related types (ZipQ→ZipQueueType,ZipOptions→ZipOptionsType, etc.).If you tried the original
CZipClassexamples, please update your code to useZipToolsClass.
Full details: CHANGELOG.
Following on from Marcelo_Sanseau’s original post and discussion, a new open-source library is now available: ZipTools-for-Clarion.
Key features
- Multi-threaded ZIP creation for fast compression of large or many files
- Improved UNZIP support (single-threaded, added where the original had none)
- Progress reporting — much requested in the earlier ClarionHub thread
- Adaptive compression strategies (chooses best level for each file type/size)
- Password-protected archives
- Flexible overwrite behaviour (ask, silent, overwrite, append)
- Folder zipping with or without base paths preserved
- Robust error handling
- Powered by zlib — proven, cross-platform compression library used in countless systems
Why it matters
Earlier solutions like LSZip and ClarionZipClass had speed, stability, and feature limitations. This project brings a faster, more reliable, and feature-rich option for integrating ZIP/UNZIP directly into Clarion applications — while leveraging the rock-solid zlib compression engine.
Links
- GitHub repo: ZipTools-for-Clarion
- License: MIT
Feedback & Contributions
Feedback, testing, and improvements are very welcome:
- Fork the repo and submit pull requests
- Open issues on GitHub for bugs, enhancements, or ideas
- Contributions of any size (docs, code, testing) are appreciated
Example usage
Creating a ZIP file:
MyZip ZipToolsClass
FileQ ZipQueueType
ZipOpts LIKE(ZipOptionsType)
ZipOpts.ZipName = 'C:\Output\MyArchive.zip'
ZipOpts.ShowProgress = TRUE
ZipOpts.Threads = 8
ZipOpts.Overwrite = CZ_ZIP_OVERWRITE_ASK
IF MyZip.CreateZipFile(FileQ, ZipOpts) = 0
MESSAGE('ZIP file created successfully')
ELSE
MESSAGE('Error: ' & MyZip.Errors.GetErrorMessage())
END
Extracting:
MyZip ZipToolsClass
UnzipOpts LIKE(UnzipOptionsType)
UnzipOpts.ZipName = 'C:\Input\Archive.zip'
UnzipOpts.OutputFolder = 'C:\Output\ExtractedFiles'
UnzipOpts.ShowProgress = TRUE
UnzipOpts.Overwrite = UZ_OVERWRITE_SILENT
IF MyZip.ExtractZipFile(UnzipOpts) = 0
MESSAGE('ZIP file extracted successfully')
ELSE
MESSAGE('Error: ' & MyZip.Errors.GetErrorMessage())
END
This way:
- New readers immediately see the correct class and type names.
- Existing readers who saw “CZipClass” yesterday won’t be left confused.
- You link out to the CHANGELOG for the full breakdown.
Do you want me to also prep a short Discord/Twitter-style announcement blurb that just highlights the breaking rename (for anyone who saw CZipClass yesterday)?