Sample code for 30+ languages & platforms
Delphi DLL

Download a Zip from a URL and OpenBd. (No .zip file is created)

See more Zip Examples

Demonstrates how to download a .zip from a URL, opens the Zip, and gets the contents of a file. No file is ever written.

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, Http, BinData, StringBuilder, ZipEntry, Zip;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
http: HCkHttp;
bd: HCkBinData;
zip: HCkZip;
entry: HCkZipEntry;
lineEndingBehavior: Integer;
xmlStr: PWideChar;
sb: HCkStringBuilder;

begin
success := False;

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

http := CkHttp_Create();

bd := CkBinData_Create();

// This URL is valid and can be tested...
success := CkHttp_QuickGetBd(http,'https://chilkatdownload.com/example_data/hamlet.zip',bd);
if (CkHttp_getLastMethodSuccess(http) = False) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Exit;
  end;

zip := CkZip_Create();

// Open the zip from the bytes contained in bd.
success := CkZip_OpenBd(zip,bd);
if (success = False) then
  begin
    Memo1.Lines.Add(CkZip__lastErrorText(zip));
    Exit;
  end;

// Get the entry for the file we want..
entry := CkZipEntry_Create();
success := CkZip_EntryOf(zip,'hamlet.xml',entry);
if (success = False) then
  begin
    Memo1.Lines.Add(CkZip__lastErrorText(zip));
    Exit;
  end;

// Convert all line endings to CRLF (if needed)
lineEndingBehavior := 2;
xmlStr := CkZipEntry__unzipToString(entry,lineEndingBehavior,'utf-8');
if (CkZipEntry_getLastMethodSuccess(entry) = False) then
  begin
    Memo1.Lines.Add(CkZipEntry__lastErrorText(entry));
    Exit;
  end;

// The XML in this case is about 274K, so let's just examine the last 20 lines...
sb := CkStringBuilder_Create();
CkStringBuilder_Append(sb,xmlStr);

Memo1.Lines.Add(CkStringBuilder__lastNLines(sb,20,True));

CkHttp_Dispose(http);
CkBinData_Dispose(bd);
CkZip_Dispose(zip);
CkZipEntry_Dispose(entry);
CkStringBuilder_Dispose(sb);

end;