Sample code for 30+ languages & platforms
DataFlex

Decompress Gzip Data In-Place Using BinData

See more Gzip Examples

This example demonstrates how to use the UncompressBd method to decompress Gzip data stored in a BinData object.

The compressed .gz file is first loaded into memory. The UncompressBd method then decompresses the data in-place, meaning the original compressed bytes in the BinData object are replaced with the uncompressed data.

After decompression, the example writes the resulting data to a file. This approach is useful when working entirely in memory before saving or further processing the uncompressed data.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoGzip
    Variant vBd
    Handle hoBd
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // This example demonstrates how to decompress Gzip data stored in a BinData object.
    // The decompression is done in-place, replacing the compressed data with the original data.

    Get Create (RefClass(cComChilkatGzip)) To hoGzip
    If (Not(IsComObjectCreated(hoGzip))) Begin
        Send CreateComObject of hoGzip
    End
    Get Create (RefClass(cComChilkatBinData)) To hoBd
    If (Not(IsComObjectCreated(hoBd))) Begin
        Send CreateComObject of hoBd
    End

    // Load a .gz file into BinData:
    Get ComLoadFile Of hoBd "example.txt.gz" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoBd To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComNumBytes Of hoBd To iTemp1
    Showln "Compressed size (bytes): " iTemp1

    // Uncompress the data in-place:
    Get pvComObject of hoBd to vBd
    Get ComUncompressBd Of hoGzip vBd To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoGzip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComNumBytes Of hoBd To iTemp1
    Showln "Decompressed size (bytes): " iTemp1

    // Save the uncompressed data to a file:
    Get ComWriteFile Of hoBd "example.txt" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoBd To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "File successfully uncompressed to example.txt"


End_Procedure