Sample code for 30+ languages & platforms
Delphi DLL

Decompress Gzip Data In-Place Using BinData

See more Gzip Examples

This example demonstrates how to use the UncompressBd method to decompress Gzip data stored in a BinData object.

The compressed .gz file is first loaded into memory. The UncompressBd method then decompresses the data in-place, meaning the original compressed bytes in the BinData object are replaced with the uncompressed data.

After decompression, the example writes the resulting data to a file. This approach is useful when working entirely in memory before saving or further processing the uncompressed data.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, BinData, Gzip;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
gzip: HCkGzip;
bd: HCkBinData;

begin
success := False;

// This example demonstrates how to decompress Gzip data stored in a BinData object.
// The decompression is done in-place, replacing the compressed data with the original data.

gzip := CkGzip_Create();
bd := CkBinData_Create();

// Load a .gz file into BinData:
success := CkBinData_LoadFile(bd,'example.txt.gz');
if (success = False) then
  begin
    Memo1.Lines.Add(CkBinData__lastErrorText(bd));
    Exit;
  end;

Memo1.Lines.Add('Compressed size (bytes): ' + IntToStr(CkBinData_getNumBytes(bd)));

// Uncompress the data in-place:
success := CkGzip_UncompressBd(gzip,bd);
if (success = False) then
  begin
    Memo1.Lines.Add(CkGzip__lastErrorText(gzip));
    Exit;
  end;

Memo1.Lines.Add('Decompressed size (bytes): ' + IntToStr(CkBinData_getNumBytes(bd)));

// Save the uncompressed data to a file:
success := CkBinData_WriteFile(bd,'example.txt');
if (success = False) then
  begin
    Memo1.Lines.Add(CkBinData__lastErrorText(bd));
    Exit;
  end;

Memo1.Lines.Add('File successfully uncompressed to example.txt');

CkGzip_Dispose(gzip);
CkBinData_Dispose(bd);

end;