Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Compress a File to Gzip in Memory using BinData

See more Gzip Examples

This example demonstrates how to use the CompressFileBd method to compress a file into Gzip format and store the compressed result in memory using a BinData object.

The input file is read from disk and compressed, with the resulting .gz data placed in the BinData instance. This allows your application to work with the compressed data entirely in memory before deciding what to do next.

Finally, the example shows how the in-memory Gzip data can be written to a file, which is useful for saving or distributing the compressed output.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.BinData,
  Chilkat.Gzip;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  gzip: TGzip;
  bd: TBinData;
  filePath: string;

begin
  success := False;

  //  This example demonstrates how to compress a file into Gzip format
  //  and store the compressed result in a BinData object (in memory).

  gzip := TGzip.Create;
  bd := TBinData.Create;

  //  The file to be compressed:
  filePath := 'example.txt';

  //  Compress the file into the BinData object:
  success := gzip.CompressFileBd(filePath,bd);
  if (success = False) then
    begin
      WriteLn(gzip.LastErrorText);
      Exit;
    end;

  //  At this point, "bd" contains the Gzip-compressed data in memory.
  WriteLn('Compression successful.');
  WriteLn('Compressed size (bytes): ' + bd.NumBytes);

  //  (Optional) Save the in-memory Gzip data to a file:
  success := bd.WriteFile('example.txt.gz');
  if (success = False) then
    begin
      WriteLn(bd.LastErrorText);
      Exit;
    end;

  WriteLn('Gzip file written to example.txt.gz');


  gzip.Free;
  bd.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.