Delphi DLL
Delphi DLL
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 Delphi DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, BinData, StringBuilder, Compression;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
bdCompressed: HCkBinData;
compress: HCkCompression;
sbUncompressedChunk: HCkStringBuilder;
i: Integer;
bdDecompressed: HCkBinData;
originalText: PWideChar;
begin
success := False;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
bdCompressed := CkBinData_Create();
compress := CkCompression_Create();
CkCompression_putAlgorithm(compress,'deflate');
CkCompression_putCharset(compress,'utf-8');
sbUncompressedChunk := CkStringBuilder_Create();
CkCompression_putFirstChunk(compress,True);
CkCompression_putLastChunk(compress,False);
for i := 0 to 24 do
begin
if (i = 24) then
begin
CkCompression_putLastChunk(compress,True);
end;
CkStringBuilder_Clear(sbUncompressedChunk);
CkStringBuilder_AppendInt(sbUncompressedChunk,i);
CkStringBuilder_Append(sbUncompressedChunk,': This is a line of data to be compressed...' + #13#10);
CkCompression_CompressSb(compress,sbUncompressedChunk,bdCompressed);
CkCompression_putFirstChunk(compress,False);
end;
// Show the compressed data in hex format:
Memo1.Lines.Add('The hex encoded compressed text:');
Memo1.Lines.Add(CkBinData__getEncoded(bdCompressed,'hex'));
// Now decompress in one call. It is important to set both FirstChunk and LastChunk = True
bdDecompressed := CkBinData_Create();
CkCompression_putFirstChunk(compress,True);
CkCompression_putLastChunk(compress,True);
success := CkCompression_DecompressBd2(compress,bdCompressed,bdDecompressed);
if (success = False) then
begin
Memo1.Lines.Add(CkCompression__lastErrorText(compress));
Exit;
end;
originalText := CkBinData__getString(bdDecompressed,'utf-8');
Memo1.Lines.Add(originalText);
CkBinData_Dispose(bdCompressed);
CkCompression_Dispose(compress);
CkStringBuilder_Dispose(sbUncompressedChunk);
CkBinData_Dispose(bdDecompressed);
end;