Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Compress Text Feed to BinaryThis example receives incoming text data in chunks, compresses as a stream, and accumulates the compressed binary data. The purpose is to demonstrate the BeginCompressString, MoreCompressString, and EndCompressString methods.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, BinData, StringBuilder, CkByteData, Compression; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; compressedData: HCkBinData; compressedBytes: HCkByteData; compress: HCkCompression; sbIndex: HCkStringBuilder; i: Integer; originalText: PWideChar; begin // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. compressedData := CkBinData_Create(); compressedBytes := CkByteData_Create(); compress := CkCompression_Create(); CkCompression_putAlgorithm(compress,'deflate'); CkCompression_putCharset(compress,'utf-8'); sbIndex := CkStringBuilder_Create(); for i := 0 to 24 do begin // 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. CkStringBuilder_Clear(sbIndex); CkStringBuilder_AppendInt(sbIndex,i); if (i = 0) then begin success := CkCompression_BeginCompressString(compress,CkStringBuilder__getAsString(sbIndex),compressedBytes); end else begin success := CkCompression_MoreCompressString(compress,CkStringBuilder__getAsString(sbIndex),compressedBytes); end; CkBinData_AppendBinary(compressedData,compressedBytes); success := CkCompression_MoreCompressString(compress,': This is a line of data to be compressed...' + #13#10,compressedBytes); CkBinData_AppendBinary(compressedData,compressedBytes); end; // Flush any remaining output. success := CkCompression_EndCompressString(compress,compressedBytes); CkBinData_AppendBinary(compressedData,compressedBytes); // Show the compressed data in hex format: Memo1.Lines.Add('The hex encoded compressed text:'); Memo1.Lines.Add(CkBinData__getEncoded(compressedData,'hex')); // Now decompress in one call: success := CkBinData_GetBinary(compressedData,compressedBytes); originalText := CkCompression__decompressString(compress,compressedBytes); Memo1.Lines.Add(originalText); CkBinData_Dispose(compressedData); CkByteData_Dispose(compressedBytes); CkCompression_Dispose(compress); CkStringBuilder_Dispose(sbIndex); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.