![]() |
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) Iterate Through ZIP Entries Using EntryAt and ZipEntry.GetNextSee more Zip ExamplesThis example demonstrates how to iterate through all entries in a ZIP archive using:
The example prints each ZIP entry's stored filename and whether the entry is a file or directory. This approach is useful when sequentially processing ZIP entries without repeatedly calling Suppose the ZIP archive contains: The example iterates through each entry in the order stored within the ZIP archive.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ZipEntry, Zip; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; zip: HCkZip; entry: HCkZipEntry; begin success := False; zip := CkZip_Create(); // Open an existing ZIP archive. success := CkZip_OpenZip(zip,'c:/temp/example.zip'); if (success = False) then begin Memo1.Lines.Add(CkZip__lastErrorText(zip)); Exit; end; // A ZIP archive may contain zero entries. if (CkZip_getNumEntries(zip) = 0) then begin Memo1.Lines.Add('The ZIP archive is empty.'); CkZip_CloseZip(zip); Exit; end; // ------------------------------------------------------------ // Get the first ZIP entry. // // EntryAt(0,entry) initializes the ZipEntry object so that // it represents the first entry in the ZIP archive. // entry := CkZipEntry_Create(); success := CkZip_EntryAt(zip,0,entry); if (success = False) then begin Memo1.Lines.Add(CkZip__lastErrorText(zip)); Exit; end; // ------------------------------------------------------------ // Iterate through all ZIP entries. // // GetNext updates the same ZipEntry object so that it // represents the next entry in the ZIP archive. // while (success = True) do begin if (CkZipEntry_getIsDirectory(entry) = True) then begin Memo1.Lines.Add('[Directory] ' + CkZipEntry__fileName(entry)); end else begin Memo1.Lines.Add('[File] ' + CkZipEntry__fileName(entry)); end; // Advance to the next entry. success := CkZipEntry_GetNext(entry); end; CkZip_CloseZip(zip); Memo1.Lines.Add('Done.'); CkZip_Dispose(zip); CkZipEntry_Dispose(entry); end; |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.