Sample code for 30+ languages & platforms
Delphi ActiveX

Unzip all Files to a Single Directory (Ignoring Subdirectories in Zip)

See more Zip Examples

Demonstrates how to unzip all files into a single directory, ignoring the internal directory structure of the files in the .zip.

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;
outDir: WideString;
fac: TCkFileAccess;
zip: TChilkatZip;
numUnzipped: Integer;

begin
success := 0;

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

outDir := 'c:/temp/testUnzipDir';

// Make sure our output directory exists.
fac := TCkFileAccess.Create(Self);
success := fac.DirEnsureExists(outDir);
if (success = 0) then
  begin
    Memo1.Lines.Add(fac.LastErrorText);
    Exit;
  end;

zip := TChilkatZip.Create(Self);

// In this example, the xml_files.zip contains some files in the subdirectories "dir1" and also "dir2/dir3".

// a1.xml
// b1.xml
// c1.xml
// dir1/a2.xml
// dir1/c2.xml
// dir2/dir3/c3.xml

success := zip.OpenZip('qa_data/zips/xml_files.zip');
if (success = 0) then
  begin
    Memo1.Lines.Add(zip.LastErrorText);
    Exit;
  end;

// Unzip all files into the directory c:/temp/testUnzipDir
numUnzipped := zip.UnzipInto(outDir);
if (numUnzipped < 0) then
  begin
    Memo1.Lines.Add(zip.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('Num unzipped = ' + IntToStr(numUnzipped));

// After unzipping via UnzipInto, we have this:

// c:\temp\testUnzipDir\a1.xml
// c:\temp\testUnzipDir\b1.xml
// c:\temp\testUnzipDir\c1.xml
// c:\temp\testUnzipDir\a2.xml
// c:\temp\testUnzipDir\c2.xml
// c:\temp\testUnzipDir\c3.xml

zip.CloseZip();

Memo1.Lines.Add('Success.');
end;