Sample code for 30+ languages & platforms
Lazarus Pascal

Open a Zip Archive

See more Zip Examples

Demonstrates how to open a zip, or an encrypted .zip, or a legacy password-protected .zip.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
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.Zip;

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

procedure RunDemo;
var
  success: Boolean;
  zip: TZip;

begin
  success := False;

  zip := TZip.Create;

  //  Open a non-encrypted .zip
  success := zip.OpenZip('qa_data/zips/sample.zip');
  if (success <> True) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;
  WriteLn('Num entries = ' + zip.NumEntries);

  //  ...
  //  ...

  zip.CloseZip();

  //  ----------------------------------------------------------------------------
  //  Open an encrypted zip...

  //  The two main types of encryption used in ZIP archives are Password-Protected and AES.
  //  

  //  ---------------------------------------
  //  1. Legacy Password-Protected Zip
  //  
  //  This is the older and less secure method of encrypting ZIP archives. 
  //  It provides a basic level of security, but is considered weak by modern standards. 
  //  It is vulnerable to various attacks, including known-plaintext attacks and brute force attacks.
  //  Although Chilkat allows it, you shouldn't create new zip archives using legacy password-protection.

  //  ---------------------------------------
  //  2. AES Encrypted Zip
  //  
  //  AES encryption is a more modern and secure method for encrypting ZIP archives. 
  //  It provides strong encryption based on the AES algorithm, which is widely regarded as secure. 
  //  AES supports different key lengths, typically 128-bit, 192-bit, and 256-bit.

  //  When opening an encrypted zip, your application only needs to provide the correct password.
  //  The information about the type of encryption and the key length (if AES) is already embedded within the encrypted .zip.

  //  Provide the decrypt password because we are opening an existing .zip (decrypting)
  zip.DecryptPassword := 'thePassword';

  success := zip.OpenZip('qa_data/zips/encryptedSamples/ziptest_256.zip');
  if (success <> True) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;
  WriteLn('Num entries = ' + zip.NumEntries);

  //  ...
  //  ...

  zip.CloseZip();


  zip.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.