![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Create a ZIP Archive with a Top-Level Directory Using PathPrefix
This example demonstrates how to use the The example recursively adds files from:
And stores them in the ZIP archive beneath:
For example, the local filesystem file:
Will be stored in the ZIP archive as:
This is useful when creating ZIP archives that should extract into a single parent directory rather than directly into the current extraction location.
The example also demonstrates that methods such as
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Zip; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; zip: HCkZip; recurse: Boolean; begin success := False; zip := CkZip_Create(); // Initialize the Zip object and set the output filename. // The .zip file is not created until WriteZip or WriteZipAndClose is called. success := CkZip_NewZip(zip,'qa_output/test.zip'); if (success = False) then begin Memo1.Lines.Add(CkZip__lastErrorText(zip)); Exit; end; // Prepend "directory_name/" to each ZIP entry added after this point. // // For example, a file found at: // // c:/zipTest/directory_name/hello.txt // // Will be stored in the ZIP as: // // directory_name/hello.txt // // This is useful when you want the files to unzip beneath a specific // top-level directory. CkZip_putPathPrefix(zip,'directory_name/'); // Recursively add references to all files beneath: // // c:/zipTest/directory_name // // AppendFiles does not immediately read or compress the files. // It adds references to files in the local filesystem. // The referenced files are read and compressed when WriteZipAndClose is called. recurse := True; success := CkZip_AppendFiles(zip,'c:/zipTest/directory_name/*',recurse); if (success = False) then begin Memo1.Lines.Add(CkZip__lastErrorText(zip)); Exit; end; // Write the ZIP archive and close it. success := CkZip_WriteZipAndClose(zip); if (success = False) then begin Memo1.Lines.Add(CkZip__lastErrorText(zip)); Exit; end; Memo1.Lines.Add('Success.'); CkZip_Dispose(zip); end; |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.