DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vBdCompressed
Handle hoBdCompressed
Handle hoCompress
Variant vSbUncompressedChunk
Handle hoSbUncompressedChunk
Integer i
Variant vBdDecompressed
Handle hoBdDecompressed
String sOriginalText
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatBinData)) To hoBdCompressed
If (Not(IsComObjectCreated(hoBdCompressed))) Begin
Send CreateComObject of hoBdCompressed
End
Get Create (RefClass(cComChilkatCompression)) To hoCompress
If (Not(IsComObjectCreated(hoCompress))) Begin
Send CreateComObject of hoCompress
End
Set ComAlgorithm Of hoCompress To "deflate"
Set ComCharset Of hoCompress To "utf-8"
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbUncompressedChunk
If (Not(IsComObjectCreated(hoSbUncompressedChunk))) Begin
Send CreateComObject of hoSbUncompressedChunk
End
Set ComFirstChunk Of hoCompress To True
Set ComLastChunk Of hoCompress To False
For i From 0 To 24
If (i = 24) Begin
Set ComLastChunk Of hoCompress To True
End
Send ComClear To hoSbUncompressedChunk
Get ComAppendInt Of hoSbUncompressedChunk i To iSuccess
Get ComAppend Of hoSbUncompressedChunk ": This is a line of data to be compressed..." + (character(13)) + (character(10)) To iSuccess
Get pvComObject of hoSbUncompressedChunk to vSbUncompressedChunk
Get pvComObject of hoBdCompressed to vBdCompressed
Get ComCompressSb Of hoCompress vSbUncompressedChunk vBdCompressed To iSuccess
Set ComFirstChunk Of hoCompress To False
Loop
// Show the compressed data in hex format:
Showln "The hex encoded compressed text:"
Get ComGetEncoded Of hoBdCompressed "hex" To sTemp1
Showln sTemp1
// Now decompress in one call. It is important to set both FirstChunk and LastChunk = True
Get Create (RefClass(cComChilkatBinData)) To hoBdDecompressed
If (Not(IsComObjectCreated(hoBdDecompressed))) Begin
Send CreateComObject of hoBdDecompressed
End
Set ComFirstChunk Of hoCompress To True
Set ComLastChunk Of hoCompress To True
Get pvComObject of hoBdCompressed to vBdCompressed
Get pvComObject of hoBdDecompressed to vBdDecompressed
Get ComDecompressBd2 Of hoCompress vBdCompressed vBdDecompressed To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCompress To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComGetString Of hoBdDecompressed "utf-8" To sOriginalText
Showln sOriginalText
End_Procedure