Sample code for 30+ languages & platforms
Delphi DLL

Unzip an AES Encrypted Text File directly into a String Variable

See more Zip Examples

A common need is to unzip from an AES encrypted Zip archive directly into a string variable, such that the unencrypted file never resides on disk, even temporarily. This example shows how to do it.

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
zip: HCkZip;
entry: HCkZipEntry;
lineEndingBehavior: Integer;
srcCharset: PWideChar;
xmlText: PWideChar;

begin
success := False;

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

zip := CkZip_Create();

// This example opens a WinZip-compatible AES encrypted
// .zip that contains a single file: hamlet.xml.

// It decrypts and unzips hamlet.xml directly into a string
// variable.
CkZip_SetPassword(zip,'secret');
success := CkZip_OpenZip(zip,'qa_data/hamlet.zip');
if (success = False) then
  begin
    Memo1.Lines.Add(CkZip__lastErrorText(zip));
    Exit;
  end;

entry := CkZipEntry_Create();
success := CkZip_EntryOf(zip,'hamlet.xml',entry);
if (success = False) then
  begin
    Memo1.Lines.Add(CkZip__lastErrorText(zip));
    Exit;
  end;

// lineEndingBehavior:
// 0 = leave unchanged.
// 1 = convert all to bare LF's
// 2 = convert all to CRLF's
lineEndingBehavior := 0;
srcCharset := 'utf-8';
xmlText := CkZipEntry__unzipToString(entry,lineEndingBehavior,srcCharset);
Memo1.Lines.Add(xmlText);

CkZip_Dispose(zip);
CkZipEntry_Dispose(entry);

end;