![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Compressing and Decompressing Files Using Streaming (CompressFile / DecompressFile)See more Compression Examples
This example demonstrates how to compress a file to a binary format and then restore it using the Both operations are performed internally in streaming mode, allowing files of any size to be processed efficiently without loading the entire file into memory. The example also includes a simple verification step by comparing file sizes to confirm that the decompressed output matches the original input.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Compression, FileAccess; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; compress: HCkCompression; inputFile: PWideChar; compressedFile: PWideChar; decompressedFile: PWideChar; fac: HCkFileAccess; originalSize: Integer; restoredSize: Integer; begin success := False; // This example assumes the Chilkat API has already been unlocked. // See Global Unlock Sample for sample code. compress := CkCompression_Create(); // Use the zlib algorithm (recommended for general use) CkCompression_putAlgorithm(compress,'zlib'); // ------------------------------------------------------------------ // Compress a file // ------------------------------------------------------------------ inputFile := 'c:/temp/example.txt'; compressedFile := 'c:/temp/example.txt.zlib'; success := CkCompression_CompressFile(compress,inputFile,compressedFile); if (success = False) then begin Memo1.Lines.Add('Compression failed:'); Memo1.Lines.Add(CkCompression__lastErrorText(compress)); Exit; end; Memo1.Lines.Add('File compressed successfully:'); Memo1.Lines.Add(' Input: ' + inputFile); Memo1.Lines.Add(' Compressed: ' + compressedFile); // ------------------------------------------------------------------ // Decompress the file back to its original form // ------------------------------------------------------------------ decompressedFile := 'c:/temp/example_restored.txt'; success := CkCompression_DecompressFile(compress,compressedFile,decompressedFile); if (success = False) then begin Memo1.Lines.Add('Decompression failed:'); Memo1.Lines.Add(CkCompression__lastErrorText(compress)); Exit; end; Memo1.Lines.Add('File decompressed successfully:'); Memo1.Lines.Add(' Output: ' + decompressedFile); // ------------------------------------------------------------------ // Optional: Verify file sizes (basic sanity check) // ------------------------------------------------------------------ fac := CkFileAccess_Create(); originalSize := CkFileAccess_FileSize(fac,inputFile); restoredSize := CkFileAccess_FileSize(fac,decompressedFile); Memo1.Lines.Add('Original file size: ' + IntToStr(originalSize)); Memo1.Lines.Add('Restored file size: ' + IntToStr(restoredSize)); if (originalSize = restoredSize) then begin Memo1.Lines.Add('Sizes match (basic verification successful).'); end else begin Memo1.Lines.Add('Warning: File sizes differ.'); end; CkCompression_Dispose(compress); CkFileAccess_Dispose(fac); end; |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.