Sample code for 30+ languages & platforms
DataFlex

Find a ZIP Entry by EntryID Using EntryById

See more Zip Examples

This example demonstrates how to use the EntryById method to retrieve a ZIP entry using its unique EntryID.

Each ZipEntry object has an EntryID property that uniquely identifies the entry within the currently open ZIP object.

This is useful when:

  • An application stores EntryID values for later use
  • ZIP entries need to be retrieved without searching by filename
  • Multiple entries may have similar names or paths

The example:

  • Opens a ZIP archive
  • Retrieves an entry using EntryAt
  • Saves the entry's EntryID
  • Uses EntryById to retrieve the same entry later

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoZip
    Variant vEntry
    Handle hoEntry
    Integer iEntryId
    Variant vEntry
2    Handle hoEntry2
    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

    // Retrieve the first entry in the ZIP archive.
    Get Create (RefClass(cComChilkatZipEntry)) To hoEntry
    If (Not(IsComObjectCreated(hoEntry))) Begin
        Send CreateComObject of hoEntry
    End

    Get pvComObject of hoEntry to vEntry
    Get ComEntryAt Of hoZip 0 vEntry To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Original entry:"
    Get ComFileName Of hoEntry To sTemp1
    Showln "  FileName: " sTemp1
    Get ComEntryID Of hoEntry To iTemp1
    Showln "  EntryID: " iTemp1
    Showln ""

    // Save the EntryID for later use.
    Get ComEntryID Of hoEntry To iEntryId

    // Create another ZipEntry object.
    Get Create (RefClass(cComChilkatZipEntry)) To hoEntry2
    If (Not(IsComObjectCreated(hoEntry2))) Begin
        Send CreateComObject of hoEntry2
    End

    // Retrieve the same entry using EntryById.
    Get pvComObject of hoEntry2 to vEntry2
    Get ComEntryById Of hoZip iEntryId vEntry2 To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Entry retrieved by EntryID:"
    Get ComFileName Of hoEntry2 To sTemp1
    Showln "  FileName: " sTemp1
    Get ComEntryID Of hoEntry2 To iTemp1
    Showln "  EntryID: " iTemp1
    Showln ""

    // The filenames and EntryID values should match.
    Send ComCloseZip To hoZip

    Showln "Done."


End_Procedure