(Tcl) Compress String Feed to Base64
This example receives incoming text data in chunks, compresses as a stream, and accumulates the compressed data in base64. Note: This example requires Chilkat v11.0.0 or greater.
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
|