![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Compressing StringBuilder Data Using CompressSb (Single Call and Chunked)See more Compression ExamplesThis example demonstrates how to compress text stored in aStringBuilder using the CompressSb method in two ways:
The example shows how compressed output is appended to a Key Points
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoCompress Variant vSb Handle hoSb Variant vBdCompressed Handle hoBdCompressed String sCompressedBase64 Variant vBdChunkedOut Handle hoBdChunkedOut Variant vSbPart Handle hoSbPart String sChunkedBase64 Variant vSbDecompressed Handle hoSbDecompressed String sTemp1 Move False To iSuccess // This example assumes the Chilkat API has already been unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatCompression)) To hoCompress If (Not(IsComObjectCreated(hoCompress))) Begin Send CreateComObject of hoCompress End Set ComAlgorithm Of hoCompress To "zlib" // ================================================================ // 1) Single-call compression (entire data in one call) // ================================================================ Get Create (RefClass(cComChilkatStringBuilder)) To hoSb If (Not(IsComObjectCreated(hoSb))) Begin Send CreateComObject of hoSb End Get ComAppend Of hoSb "The quick brown fox jumps over the lazy dog. " To iSuccess Get ComAppend Of hoSb "This is a simple example using CompressSb." To iSuccess Get Create (RefClass(cComChilkatBinData)) To hoBdCompressed If (Not(IsComObjectCreated(hoBdCompressed))) Begin Send CreateComObject of hoBdCompressed End // When both FirstChunk and LastChunk are true (the defaults), // the entire compression happens in a single call. Set ComFirstChunk Of hoCompress To True Set ComLastChunk Of hoCompress To True Get pvComObject of hoSb to vSb Get pvComObject of hoBdCompressed to vBdCompressed Get ComCompressSb Of hoCompress vSb vBdCompressed To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End Get ComGetEncoded Of hoBdCompressed "base64" To sCompressedBase64 Showln "Single-call compressed (base64):" Showln sCompressedBase64 // ================================================================ // 2) Chunked compression using FirstChunk / LastChunk // ================================================================ Get Create (RefClass(cComChilkatBinData)) To hoBdChunkedOut If (Not(IsComObjectCreated(hoBdChunkedOut))) Begin Send CreateComObject of hoBdChunkedOut End // First chunk Set ComFirstChunk Of hoCompress To True Set ComLastChunk Of hoCompress To False Get Create (RefClass(cComChilkatStringBuilder)) To hoSbPart If (Not(IsComObjectCreated(hoSbPart))) Begin Send CreateComObject of hoSbPart End Get ComAppend Of hoSbPart "The quick brown fox " To iSuccess Get pvComObject of hoSbPart to vSbPart Get pvComObject of hoBdChunkedOut to vBdChunkedOut Get ComCompressSb Of hoCompress vSbPart vBdChunkedOut To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End // Middle chunk Set ComFirstChunk Of hoCompress To False Set ComLastChunk Of hoCompress To False Send ComClear To hoSbPart Get ComAppend Of hoSbPart "jumps over the lazy dog. " To iSuccess Get pvComObject of hoSbPart to vSbPart Get pvComObject of hoBdChunkedOut to vBdChunkedOut Get ComCompressSb Of hoCompress vSbPart vBdChunkedOut To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End // Final chunk Set ComFirstChunk Of hoCompress To False Set ComLastChunk Of hoCompress To True Send ComClear To hoSbPart Get ComAppend Of hoSbPart "This is a chunked CompressSb example." To iSuccess Get pvComObject of hoSbPart to vSbPart Get pvComObject of hoBdChunkedOut to vBdChunkedOut Get ComCompressSb Of hoCompress vSbPart vBdChunkedOut To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End Get ComGetEncoded Of hoBdChunkedOut "base64" To sChunkedBase64 Showln "Chunked compressed (base64):" Showln sChunkedBase64 // ================================================================ // 3) Decompress to verify correctness // ================================================================ Get Create (RefClass(cComChilkatStringBuilder)) To hoSbDecompressed If (Not(IsComObjectCreated(hoSbDecompressed))) Begin Send CreateComObject of hoSbDecompressed End // Decompress in a single call (entire data already assembled) Set ComFirstChunk Of hoCompress To True Set ComLastChunk Of hoCompress To True Get pvComObject of hoBdChunkedOut to vBdChunkedOut Get pvComObject of hoSbDecompressed to vSbDecompressed Get ComDecompressSb Of hoCompress vBdChunkedOut vSbDecompressed To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCompress To sTemp1 Showln sTemp1 Procedure_Return End Showln "Decompressed text:" Get ComGetAsString Of hoSbDecompressed To sTemp1 Showln sTemp1 End_Procedure |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.