Sample code for 30+ languages & platforms
Delphi ActiveX

Create a Zip Entirely in Memory

See more Zip Examples

Demonstrates how to create a .zip from in-memory byte data and strings, and to write the .zip to an in-memory image.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
crypt: TChilkatCrypt2;
zip: TChilkatZip;
bd: TChilkatBinData;
zipFileInMemory: Array of Byte;
fac: TCkFileAccess;

begin
success := 0;

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

crypt := TChilkatCrypt2.Create(Self);
zip := TChilkatZip.Create(Self);

success := zip.NewZip('test.zip');
if (success = 0) then
  begin
    Memo1.Lines.Add(zip.LastErrorText);
    Exit;
  end;

// Add the bytes 0x00 0x01 0x02 0x03 ... 0x0F as a file in the .zip
bd := TChilkatBinData.Create(Self);
bd.AppendEncoded('000102030405060708090A0B0C0D0E0F','hex');
zip.AddBd('binaryData.dat',bd.ControlInterface);

// Add the string "Hello World!" to the .zip
zip.AddString('helloWorld.txt','Hello World!','utf-8');

zipFileInMemory := zip.WriteToMemory();

// We could save these files to a file, and it is a valid .zip
fac := TCkFileAccess.Create(Self);
success := fac.WriteEntireFile('test.zip',zipFileInMemory);
if (success = 0) then
  begin
    Memo1.Lines.Add(fac.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('Zip Created!');
end;