Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
|
PPMD Streaming String CompressionDemonstrates streaming string compression using PPMD. Data may be compressed in chunks by initially calling one of the BeginCompress* methods, followed by 0 or more calls to a MoreCompress* method, and terminating with a call to an EndCompress* method. Likewise, data may be decompressed by calling a BeginDecompress* method, followed by 0 or more MoreDecompress* calls, and ending with an EndDecompress* method call. This example demonstrates string-to-string compression and decompression in chunks.
LOCAL loCompress LOCAL lnSuccess LOCAL lcStrData LOCAL i LOCAL lcStrCompressed LOCAL lcStrOriginal LOCAL lcChunk1 LOCAL lcChunk2 LOCAL lcChunk3 LOCAL lcChunk4 loCompress = CreateObject('Chilkat.Compression') * Any string argument automatically begins a 30-day trial. lnSuccess = loCompress.UnlockComponent("30-day trial") IF (lnSuccess <> 1) THEN =MESSAGEBOX("Compression component unlock failed") QUIT ENDIF loCompress.Algorithm = "ppmd" loCompress.Charset = "ansi" loCompress.EncodingMode = "base64" * Create a long string to compress. lcStrData = "abcdefg1122334455667788" lcStrData = lcStrData + CHR(13)+CHR(10) * Note: BeginCompressStringENC may return a zero-length * string. This is normal if the input is buffered and no * compressed data is yet available. * However, a null reference indicates an error -- which is * generally only possible if the component was never unlocked. lcStrCompressed = loCompress.BeginCompressStringENC(lcStrData) * Compress 100 more chunks of data. Each call to * MoreCompressStringENC may or may not produce additional * compressed output. FOR i = 0 TO 99 lcStrData = "abcdefg1122334455667788" lcStrData = lcStrData + CHR(13)+CHR(10) lcStrCompressed = lcStrCompressed + loCompress.MoreCompressStringENC(lcStrData) NEXT * Finalize the compression with a single call to EndCompressStringENC: lcStrCompressed = lcStrCompressed + loCompress.EndCompressStringENC() * Display the compressed string. * The result will be: * ec8YZ5vk9za18d0plwuV7R65em9OZge9gJXht/QAAAAAAAAAABNOZQAAKw== ? lcStrCompressed * Decompress back to the original in a single call. lcStrOriginal = loCompress.DecompressStringENC(lcStrCompressed) * Display the uncompressed original: ? "--- Original ---" ? lcStrOriginal * Decompress in multiple calls. It doesn't matter how the * compressed data is split -- it could be fed to the decompressor * one char at a time if desired. lcChunk1 = "ec8YZ5vk9za1" lcChunk2 = "8d0p" lcChunk3 = "lwuV7R65em9OZge9gJXht/QAAAA" lcChunk4 = "AAAAAABNOZQAAKw==" lcStrOriginal = "" lcStrOriginal = loCompress.BeginDecompressStringENC(lcChunk1) lcStrOriginal = lcStrOriginal + loCompress.MoreDecompressStringENC(lcChunk2) lcStrOriginal = lcStrOriginal + loCompress.MoreDecompressStringENC(lcChunk3) lcStrOriginal = lcStrOriginal + loCompress.MoreDecompressStringENC(lcChunk4) lcStrOriginal = lcStrOriginal + loCompress.EndDecompressStringENC() * Display the uncompressed original after decompressing in chunks: ? "--- Original after Decompressing from Chunks ---" ? lcStrOriginal |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.
Mail Component · .NET Email Component · ASP Mail Component · XML Parser