Delphi DLL
Delphi DLL
Iterate Over ZIP Entries Using EntryAt
This example demonstrates how to use the EntryAt method to iterate over all entries contained within a ZIP archive.
The EntryAt method retrieves a ZipEntry object for a given zero-based index.
This is useful for:
- Enumerating all entries in a ZIP archive
- Inspecting filenames, sizes, and timestamps
- Searching or filtering ZIP contents
Suppose the ZIP archive contains:
docs/readme.txt
images/logo.png
data/config.json The example loops through all ZIP entries and prints information about each entry.
Chilkat Delphi DLL Downloads
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;
numEntries: Integer;
entry: HCkZipEntry;
i: Integer;
begin
success := False;
success := False;
// Open an existing ZIP archive.
zip := CkZip_Create();
success := CkZip_OpenZip(zip,'example.zip');
if (success = False) then
begin
Memo1.Lines.Add(CkZip__lastErrorText(zip));
Exit;
end;
// Get the total number of entries in the ZIP archive.
numEntries := CkZip_getNumEntries(zip);
Memo1.Lines.Add('Number of ZIP entries = ' + IntToStr(numEntries));
// Create a ZipEntry object that will be reused
// for each entry retrieved by EntryAt.
entry := CkZipEntry_Create();
// Iterate over all ZIP entries.
i := 0;
while i < numEntries do
begin
// Retrieve the entry at index i.
success := CkZip_EntryAt(zip,i,entry);
if (success = False) then
begin
Memo1.Lines.Add(CkZip__lastErrorText(zip));
Exit;
end;
Memo1.Lines.Add('Entry ' + IntToStr(i));
Memo1.Lines.Add(' FileName: ' + CkZipEntry__fileName(entry));
Memo1.Lines.Add(' Uncompressed Length: ' + IntToStr(CkZipEntry_getUncompressedLength(entry)));
Memo1.Lines.Add(' Compressed Length: ' + IntToStr(CkZipEntry_getCompressedLength(entry)));
Memo1.Lines.Add('');
i := i + 1;
end;
// Sample output:
//
// Entry 0
// FileName: docs/readme.txt
// Uncompressed Length: 1204
// Compressed Length: 512
//
// Entry 1
// FileName: images/logo.png
// Uncompressed Length: 84211
// Compressed Length: 84102
//
CkZip_CloseZip(zip);
Memo1.Lines.Add('Done.');
CkZip_Dispose(zip);
CkZipEntry_Dispose(entry);
end;