ZipTools-for-Clarion – Modern ZIP/UNZIP for Clarion (multi-threaded ZIP, progress, password support)

ZipTools-for-Clarion :clamp:

:warning: 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 CZipClassZipToolsClass and related types (ZipQZipQueueType, ZipOptionsZipOptionsType, etc.).

If you tried the original CZipClass examples, please update your code to use ZipToolsClass.
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

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)?

14 Likes

:rocket: ZipTools for Clarion – v1.1.0 released

Quick update: I’ve just pushed v1.1.0 of ZipTools for Clarion.

What’s new:

  • :counterclockwise_arrows_button: Dynamic loading of zlibwapi.dll and zlib1.dll at runtime (no static linking headaches).
  • :puzzle_piece: Clarion template (ZipTools.tpl) for simple integration.
  • :open_file_folder: InstallZipTools.bat to copy everything into your Clarion environment.
  • :open_book: Added developer resource details to zlibwapi.dll.

Improvements:

  • Updated docs to reflect the new setup.
  • More robust DLL handling → avoids conflicts with other libraries.

If you’ve already tried v1.0.0, this should make life easier — especially when deploying to different environments.

:backhand_index_pointing_right: Repo: ZipTools-for-Clarion on GitHub

2 Likes