Sample code for 30+ languages & platforms
Lianja

Compress Text Feed to Binary

See more Compression Examples

This example receives incoming text data in chunks, compresses as a stream, and accumulates the compressed binary data.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

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

loBdCompressed = createobject("CkBinData")

loCompress = createobject("CkCompression")
loCompress.Algorithm = "deflate"
loCompress.Charset = "utf-8"

loSbUncompressedChunk = createobject("CkStringBuilder")

loCompress.FirstChunk = .T.
loCompress.LastChunk = .F.

for i = 0 to 24
    if (i = 24) then
        loCompress.LastChunk = .T.
    endif

    loSbUncompressedChunk.Clear()
    loSbUncompressedChunk.AppendInt(i)
    loSbUncompressedChunk.Append(": This is a line of data to be compressed..." + Chr(13) + Chr(10))

    loCompress.CompressSb(loSbUncompressedChunk,loBdCompressed)

    loCompress.FirstChunk = .F.
next

// Show the compressed data in hex format:
? "The hex encoded compressed text:"
? loBdCompressed.GetEncoded("hex")

// Now decompress in one call.  It is important to set both FirstChunk and LastChunk = .T.
loBdDecompressed = createobject("CkBinData")
loCompress.FirstChunk = .T.
loCompress.LastChunk = .T.
llSuccess = loCompress.DecompressBd2(loBdCompressed,loBdDecompressed)
if (llSuccess = .F.) then
    ? loCompress.LastErrorText
    release loBdCompressed
    release loCompress
    release loSbUncompressedChunk
    release loBdDecompressed
    return
endif

lcOriginalText = loBdDecompressed.GetString("utf-8")
? lcOriginalText


release loBdCompressed
release loCompress
release loSbUncompressedChunk
release loBdDecompressed