Visual C++ Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

C++ Examples

CkString
Byte Array
Bounced Mail
Bz2
Character Encoding
CSV
DH Key Exchange
DKIM/DomainKeys
Digital Certificates
Digital Signatures
DSA
Email
Email Object
Encryption
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
POP3
RSA
S/MIME
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
XMP
Zip Compression


More Examples...
Amazon S3
NTLM
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

 

 

 

 

 

 

 

 

PPMD Streaming String Compression

Demonstrates 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.

Downloads:

MS Windows Visual C/C++ Libraries
Linux/CentOS C/C++ Libraries
MAC OS X C/C++ Libraries
Solaris C/C++ Libraries
C++ Builder Libraries
#include <CkCompression.h>
#include <CkString.h>

void ChilkatSample(void)
    {
    CkCompression compress;

    //  Any string argument automatically begins a 30-day trial.
    bool success;
    success = compress.UnlockComponent("30-day trial");
    if (success != true) {
        printf("Compression component unlock failed\n");
        return;
    }

    compress.put_Algorithm("ppmd");
    compress.put_Charset("ansi");
    compress.put_EncodingMode("base64");

    CkString strData;
    long i;

    CkString strCompressed;

    //  Create a long string to compress.
    strData = "abcdefg1122334455667788";
    strData.append("\r\n");

    //  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.
    strCompressed = compress.beginCompressStringENC(strData);

    //  Compress 100 more chunks of data.  Each call to
    //  MoreCompressStringENC may or may not produce additional
    //  compressed output.
    for (i = 0; i <= 99; i++) {
        strData = "abcdefg1122334455667788";
        strData.append("\r\n");

        strCompressed.append(compress.moreCompressStringENC(strData));
    }

    //  Finalize the compression with a single call to EndCompressStringENC:
    strCompressed.append(compress.endCompressStringENC());

    //  Display the compressed string.
    //  The result will be:
    //  ec8YZ5vk9za18d0plwuV7R65em9OZge9gJXht/QAAAAAAAAAABNOZQAAKw==

    printf("%s\n",(const char *)strCompressed);

    //  Decompress back to the original in a single call.
    CkString strOriginal;
    strOriginal = compress.decompressStringENC(strCompressed);

    //  Display the uncompressed original:
    printf("--- Original ---\n");
    printf("%s\n",(const char *)strOriginal);

    //  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.
    const char * chunk1;
    chunk1 = "ec8YZ5vk9za1";
    const char * chunk2;
    chunk2 = "8d0p";
    const char * chunk3;
    chunk3 = "lwuV7R65em9OZge9gJXht/QAAAA";
    const char * chunk4;
    chunk4 = "AAAAAABNOZQAAKw==";

    strOriginal = "";
    strOriginal = compress.beginDecompressStringENC(chunk1);
    strOriginal.append(compress.moreDecompressStringENC(chunk2));
    strOriginal.append(compress.moreDecompressStringENC(chunk3));
    strOriginal.append(compress.moreDecompressStringENC(chunk4));
    strOriginal.append(compress.endDecompressStringENC());

    //  Display the uncompressed original after decompressing in chunks:
    printf("--- Original after Decompressing from Chunks ---\n");
    printf("%s\n",(const char *)strOriginal);
    }

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Mail Component · XML Parser