DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoZip
Integer iNumEntries
Variant vEntry
Handle hoEntry
Integer i
String sTemp1
Integer iTemp1
Move False To iSuccess
Move False To iSuccess
// Open an existing ZIP archive.
Get Create (RefClass(cComChilkatZip)) To hoZip
If (Not(IsComObjectCreated(hoZip))) Begin
Send CreateComObject of hoZip
End
Get ComOpenZip Of hoZip "example.zip" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the total number of entries in the ZIP archive.
Get ComNumEntries Of hoZip To iNumEntries
Showln "Number of ZIP entries = " iNumEntries
// Create a ZipEntry object that will be reused
// for each entry retrieved by EntryAt.
Get Create (RefClass(cComChilkatZipEntry)) To hoEntry
If (Not(IsComObjectCreated(hoEntry))) Begin
Send CreateComObject of hoEntry
End
// Iterate over all ZIP entries.
Move 0 To i
While (i < iNumEntries)
// Retrieve the entry at index i.
Get pvComObject of hoEntry to vEntry
Get ComEntryAt Of hoZip i vEntry To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "Entry " i
Get ComFileName Of hoEntry To sTemp1
Showln " FileName: " sTemp1
Get ComUncompressedLength Of hoEntry To iTemp1
Showln " Uncompressed Length: " iTemp1
Get ComCompressedLength Of hoEntry To iTemp1
Showln " Compressed Length: " iTemp1
Showln ""
Move (i + 1) To i
Loop
// 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
//
Send ComCloseZip To hoZip
Showln "Done."
End_Procedure