Sample code for 30+ languages & platforms
Tcl

Compress String Feed to Base64

See more Compression Examples

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

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set sbCompressedBase64 [new_CkStringBuilder]

set compress [new_CkCompression]

CkCompression_put_Algorithm $compress "deflate"
CkCompression_put_Charset $compress "utf-8"
CkCompression_put_EncodingMode $compress "base64"

CkCompression_put_FirstChunk $compress 1
CkCompression_put_LastChunk $compress 0

set bdCompressed [new_CkBinData]

set sbUncompressedChunk [new_CkStringBuilder]

for {set i 0} {$i <= 24} {incr i} {
    if {$i == 24} then {
        CkCompression_put_LastChunk $compress 1
    }

    CkStringBuilder_Clear $sbUncompressedChunk
    CkStringBuilder_AppendInt $sbUncompressedChunk $i
    CkStringBuilder_Append $sbUncompressedChunk ": This is a line of data to be compressed...\r\n"

    CkCompression_CompressSb $compress $sbUncompressedChunk $bdCompressed

    CkCompression_put_FirstChunk $compress 0
}

puts "The base64 encoded compressed text:"
puts [CkBinData_getEncoded $bdCompressed base64]

# Decompress in one call:
set originalText [CkCompression_decompressStringENC $compress [CkBinData_getEncoded $bdCompressed "base64"]]
puts "$originalText"

delete_CkStringBuilder $sbCompressedBase64
delete_CkCompression $compress
delete_CkBinData $bdCompressed
delete_CkStringBuilder $sbUncompressedChunk