DataFlex
DataFlex
Transition from BeginCompressStringENC to FirstChunk/LastChunk
Provides instructions for replacing deprecated BeginCompressStringENC method calls with using FirstChunk/LastChunk properties.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSbCompressedBase64
Handle hoCompress
Handle hoSbIndex
Integer i
String sOriginalText
Variant vBdCompressed
Handle hoBdCompressed
Variant vSbUncompressedChunk
Handle hoSbUncompressedChunk
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(cComChilkatStringBuilder)) To hoSbCompressedBase64
If (Not(IsComObjectCreated(hoSbCompressedBase64))) Begin
Send CreateComObject of hoSbCompressedBase64
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"
Set ComEncodingMode Of hoCompress To "base64"
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbIndex
If (Not(IsComObjectCreated(hoSbIndex))) Begin
Send CreateComObject of hoSbIndex
End
// ----------------------------------------------------------------------------------
// This is the deprecated way of compressing in chunks using Begin/More/End methods..
// ----------------------------------------------------------------------------------
For i From 0 To 24
// 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.
Send ComClear To hoSbIndex
Get ComAppendInt Of hoSbIndex i To iSuccess
If (i = 0) Begin
Get ComBeginCompressStringENC Of hoCompress (ComGetAsString(hoSbIndex)) To sTemp1
Get ComAppend Of hoSbCompressedBase64 sTemp1 To iSuccess
End
Else Begin
Get ComMoreCompressStringENC Of hoCompress (ComGetAsString(hoSbIndex)) To sTemp1
Get ComAppend Of hoSbCompressedBase64 sTemp1 To iSuccess
End
Get ComMoreCompressStringENC Of hoCompress ": This is a line of data to be compressed..." + (character(13)) + (character(10)) To sTemp1
Get ComAppend Of hoSbCompressedBase64 sTemp1 To iSuccess
Loop
// Flush any remaining output.
Get ComEndCompressStringENC Of hoCompress To sTemp1
Get ComAppend Of hoSbCompressedBase64 sTemp1 To iSuccess
Showln "The base64 encoded compressed text:"
Get ComGetAsString Of hoSbCompressedBase64 To sTemp1
Showln sTemp1
// Decompress in one call:
Get ComGetAsString Of hoSbCompressedBase64 To sTemp1
Get ComDecompressStringENC Of hoCompress sTemp1 To sOriginalText
Showln sOriginalText
// ----------------------------------------------------------------------------------
// This is new way of compressing in chunks using FirstChunk and LastChunk properties
// ----------------------------------------------------------------------------------
Send ComClear To hoSbCompressedBase64
Set ComFirstChunk Of hoCompress To True
Set ComLastChunk Of hoCompress To False
Get Create (RefClass(cComChilkatBinData)) To hoBdCompressed
If (Not(IsComObjectCreated(hoBdCompressed))) Begin
Send CreateComObject of hoBdCompressed
End
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbUncompressedChunk
If (Not(IsComObjectCreated(hoSbUncompressedChunk))) Begin
Send CreateComObject of hoSbUncompressedChunk
End
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
Showln "The base64 encoded compressed text:"
Get ComGetEncoded Of hoBdCompressed "base64" To sTemp1
Showln sTemp1
// Decompress in one call:
Get ComGetEncoded Of hoBdCompressed "base64" To sTemp1
Get ComDecompressStringENC Of hoCompress sTemp1 To sOriginalText
Showln sOriginalText
End_Procedure