Sample code for 30+ languages & platforms
PureBasic

Transition from ZipEntry.NextEntry to ZipEntry.GetNext

Provides instructions for replacing deprecated NextEntry method calls with GetNext.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkZip.pb"
IncludeFile "CkZipEntry.pb"

Procedure ChilkatExample()

    success.i = 0

    ; ------------------------------------------------------------------------
    ; The NextEntry method is deprecated.
    ; See below or code showing how to rewrite using EntryAt/GetNext

    zip.i = CkZip::ckCreate()
    If zip.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkZip::ckOpenZip(zip,"qa_data/zips/xml_files.zip")
    If success <> 1
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    entry.i = CkZip::ckFirstEntry(zip)
    If CkZip::ckLastMethodSuccess(zip) = 0
        Debug "This zip archive is empty."
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    finished.i = 0
    While finished = 0

        If CkZipEntry::ckIsDirectory(entry) = 0
            Debug CkZipEntry::ckFileName(entry)
        Else
            Debug "(directory) " + CkZipEntry::ckFileName(entry)
        EndIf

        next.i = CkZipEntry::ckNextEntry(entry)
        If CkZipEntry::ckLastMethodSuccess(entry) = 0
            finished = 1
        EndIf

        CkZipEntry::ckDispose(entry)

        entry = next
    Wend

    CkZip::ckCloseZip(zip)

    Debug "----"

    ; ------------------------------------------------------------------------
    ; Do the equivalent using EntryAt/GetNext.

    success = CkZip::ckOpenZip(zip,"qa_data/zips/xml_files.zip")

    ze.i = CkZipEntry::ckCreate()
    If ze.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkZip::ckEntryAt(zip,0,ze)

    entryValid.i = 1
    While entryValid = 1

        If CkZipEntry::ckIsDirectory(ze) = 0
            Debug CkZipEntry::ckFileName(ze)
        Else
            Debug "(directory) " + CkZipEntry::ckFileName(ze)
        EndIf

        entryValid = CkZipEntry::ckGetNext(ze)
    Wend

    CkZip::ckCloseZip(zip)


    CkZip::ckDispose(zip)
    CkZipEntry::ckDispose(ze)


    ProcedureReturn
EndProcedure