Sample code for 30+ languages & platforms
PowerBuilder

Unzip Some Files by Iterating over Entries

See more Zip Examples

Demonstrates how to unzip specific files by iterating over entries in a .zip.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Zip
oleobject loo_SbFilename
oleobject loo_Entry
integer li_NumEntries
integer i
string ls_EntryFilePath

li_Success = 0

// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loo_Zip = create oleobject
li_rc = loo_Zip.ConnectToNewObject("Chilkat.Zip")
if li_rc < 0 then
    destroy loo_Zip
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Open a .zip containing:
// 
// a1.xml
// b1.xml
// c1.xml
// dir1/a2.xml
// dir1/c2.xml
// dir2/dir3/c3.xml

// We wish to unzip only a1.xml, b1.xml, and c1.xml
li_Success = loo_Zip.OpenZip("qa_data/zips/xml_files.zip")
if li_Success = 0 then
    Write-Debug loo_Zip.LastErrorText
    destroy loo_Zip
    return
end if

loo_SbFilename = create oleobject
li_rc = loo_SbFilename.ConnectToNewObject("Chilkat.StringBuilder")

loo_Entry = create oleobject
li_rc = loo_Entry.ConnectToNewObject("Chilkat.ZipEntry")

li_NumEntries = loo_Zip.NumEntries
i = 0
do while i < li_NumEntries
    loo_Zip.EntryAt(i,loo_Entry)

    ls_EntryFilePath = loo_Entry.FileName
    Write-Debug ls_EntryFilePath

    if loo_Entry.IsDirectory = 0 then
        loo_SbFilename.SetString(ls_EntryFilePath)
        if loo_SbFilename.Contains("/",0) = 0 then
            // Does not contain "/"
            // Unzip to the qa_output directory.
            li_Success = loo_Entry.Extract("qa_output")
            if li_Success = 0 then
                Write-Debug "Failed to unzip " + ls_EntryFilePath
            else
                Write-Debug "Unzipped " + ls_EntryFilePath
            end if

        end if

    end if

    i = i + 1
loop


destroy loo_Zip
destroy loo_SbFilename
destroy loo_Entry