Sample code for 30+ languages & platforms
Go

Transition from BeginCompressStringENC to FirstChunk/LastChunk

Provides instructions for replacing deprecated BeginCompressStringENC method calls with using FirstChunk/LastChunk properties.

Chilkat Go Downloads

Go
    success := false

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

    sbCompressedBase64 := chilkat.NewStringBuilder()

    compress := chilkat.NewCompression()
    compress.SetAlgorithm("deflate")
    compress.SetCharset("utf-8")
    compress.SetEncodingMode("base64")

    sbIndex := chilkat.NewStringBuilder()

    // ----------------------------------------------------------------------------------
    // This is the deprecated way of compressing in chunks using Begin/More/End methods..
    // ----------------------------------------------------------------------------------
    var i int
    for i = 0; i <= 24; i++ {
        // Note: It is possible (and normal) for a BeginCompress* or MoreCompress* method to return
        // an empty string (or 0 bytes).  When this happens, the input data is not lost.  It will be flushed
        // in a subsequent call.
        sbIndex.Clear()
        sbIndex.AppendInt(i)
        if i == 0 {
            sbCompressedBase64.Append(*compress.BeginCompressStringENC(*sbIndex.GetAsString()))
        } else {
            sbCompressedBase64.Append(*compress.MoreCompressStringENC(*sbIndex.GetAsString()))
        }

        sbCompressedBase64.Append(*compress.MoreCompressStringENC(": This is a line of data to be compressed...\r\n"))
    }

    // Flush any remaining output.
    sbCompressedBase64.Append(*compress.EndCompressStringENC())

    fmt.Println("The base64 encoded compressed text:")
    fmt.Println(*sbCompressedBase64.GetAsString())

    // Decompress in one call:
    originalText := compress.DecompressStringENC(*sbCompressedBase64.GetAsString())
    fmt.Println(*originalText)

    // ----------------------------------------------------------------------------------
    // This is new way of compressing in chunks using FirstChunk and LastChunk properties
    // ----------------------------------------------------------------------------------

    sbCompressedBase64.Clear()

    compress.SetFirstChunk(true)
    compress.SetLastChunk(false)

    bdCompressed := chilkat.NewBinData()
    sbUncompressedChunk := chilkat.NewStringBuilder()

    for i = 0; i <= 24; i++ {
        if i == 24 {
            compress.SetLastChunk(true)
        }

        sbUncompressedChunk.Clear()
        sbUncompressedChunk.AppendInt(i)
        sbUncompressedChunk.Append(": This is a line of data to be compressed...\r\n")

        compress.CompressSb(sbUncompressedChunk,bdCompressed)

        compress.SetFirstChunk(false)
    }

    fmt.Println("The base64 encoded compressed text:")
    fmt.Println(*bdCompressed.GetEncoded("base64"))

    // Decompress in one call:
    originalText = compress.DecompressStringENC(*bdCompressed.GetEncoded("base64"))
    fmt.Println(*originalText)

    sbCompressedBase64.DisposeStringBuilder()
    compress.DisposeCompression()
    sbIndex.DisposeStringBuilder()
    bdCompressed.DisposeBinData()
    sbUncompressedChunk.DisposeStringBuilder()