Delphi Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Character Encoding
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
RSA Encryption
S/MIME
Socket
Spider
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA

Unreleased...
Bzip2
LZW
Bz2
Icon

Type Conversion

 

Article: Understanding COM References in Delphi

Controlling filepaths within a Zip

How to control the filepaths stored within a .zip.

Download Chilkat Zip ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    ChilkatZip2Lib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
zip: TChilkatZip2;
success: Integer;
recurse: Integer;

begin
zip := TChilkatZip2.Create(Self);

//  Any string unlocks the component for the 1st 30-days.
success := zip.UnlockComponent('Anything for 30-day trial');
if (success <> 1) then
  begin
    ShowMessage(zip.LastErrorText);

  end;

//  This is the directory structure on the local filesystem
//  from which we'll create .zip archives:
//  The root directory is c:\temp\filesToZip
// 
//  We have these files:
//  c:\temp\filesToZip\faxCover.doc
//  c:\temp\filesToZip\exe\Setup.exe
//  c:\temp\filesToZip\images\cheese.jpg
//  c:\temp\filesToZip\images\dude.gif
//  c:\temp\filesToZip\images\img3.gif
//  c:\temp\filesToZip\images\img4.gif
//  c:\temp\filesToZip\images\img5.gif
//  c:\temp\filesToZip\images\scream.jpg
//  c:\temp\filesToZip\images\imageInfo\scream.xml
//  c:\temp\filesToZip\images\imageInfo\cheese.xml
//  c:\temp\filesToZip\text\html\bonaireFishing.html
//  c:\temp\filesToZip\text\html\upload.html
//  c:\temp\filesToZip\text\txt\hello.txt
//  c:\temp\filesToZip\text\txt\HelloWorld123.txt
//  c:\temp\filesToZip\text\xml\hamlet.xml
//  c:\temp\filesToZip\text\xml\pigs.xml

//  There are three properties to help control the paths stored
//  within a .zip:
//  AppendFromDir
//  PathPrefix
//  DiscardPaths
// 

//  First we'll demonstrate AppendFromDir
//  When a directory tree is appended via AppendFiles or
//  AppendFilesEx, the AppendFromDir sets the base of the
//  directory tree appended (if the file pattern contains a
//  relative path, or no path at all).

//  Clear the zip object.
zip.NewZip('test1.zip');

recurse := 1;

zip.AppendFromDir := 'c:/temp/filesToZip';
zip.AppendFiles('*.xml',recurse);

//  The zip will contain:
//  images\imageInfo\scream.xml
//  images\imageInfo\cheese.xml
//  text\xml\hamlet.xml
//  text\xml\pigs.xml

success := zip.WriteZipAndClose();
if (success <> 1) then
  begin
    ShowMessage(zip.LastErrorText);

  end;

//  Clear the zip object.
zip.NewZip('test2.zip');

zip.AppendFromDir := 'c:/temp/filesToZip/images';
zip.AppendFiles('*.xml',recurse);
zip.AppendFromDir := 'c:/temp/filesToZip/text';
zip.AppendFiles('*.xml',recurse);

//  The zip will contain:
//  imageInfo\scream.xml
//  imageInfo\cheese.xml
//  xml\hamlet.xml
//  xml\pigs.xml

success := zip.WriteZipAndClose();
if (success <> 1) then
  begin
    ShowMessage(zip.LastErrorText);

  end;

//  The PathPrefix property adds an arbitrary path prefix to each
//  file in the .zip.
//  For example:

//  Clear the zip object.
zip.NewZip('test3.zip');

zip.PathPrefix := 'chilkat/';

zip.AppendFromDir := 'c:/temp/filesToZip/images';
zip.AppendFiles('*.xml',recurse);
zip.AppendFromDir := 'c:/temp/filesToZip/text';
zip.AppendFiles('*.xml',recurse);

//  The zip will contain:
//  chilkat\imageInfo\scream.xml
//  chilkat\imageInfo\cheese.xml
//  chilkat\xml\hamlet.xml
//  chilkat\xml\pigs.xml

success := zip.WriteZipAndClose();
if (success <> 1) then
  begin
    ShowMessage(zip.LastErrorText);

  end;

//  The DiscardPaths property removes the path from each file
//  in the zip:
//  For example:

//  Clear the zip object.
zip.NewZip('test4.zip');

zip.PathPrefix := '';
zip.DiscardPaths := 1;

zip.AppendFromDir := 'c:/temp/filesToZip/';
zip.AppendFiles('*',recurse);

//  The zip will contain:
//  faxCover.doc
//  Setup.exe
//  cheese.jpg
//  dude.gif
//  img3.gif
//  img4.gif
//  img5.gif
//  scream.jpg
//  scream.xml
//  cheese.xml
//  bonaireFishing.html
//  upload.html
//  hello.txt
//  HelloWorld123.txt
//  hamlet.xml
//  pigs.xml

success := zip.WriteZipAndClose();
if (success <> 1) then
  begin
    ShowMessage(zip.LastErrorText);

  end;

//  You can combine PathPrefix with DiscardPaths:

//  Clear the zip object.
zip.NewZip('test5.zip');

zip.PathPrefix := 'chilkat/';
zip.DiscardPaths := 1;

zip.AppendFromDir := 'c:/temp/filesToZip/';
zip.AppendFiles('*',recurse);

//  The zip will contain:
//  chilkat\faxCover.doc
//  chilkat\Setup.exe
//  chilkat\cheese.jpg
//  chilkat\dude.gif
//  chilkat\img3.gif
//  chilkat\img4.gif
//  chilkat\img5.gif
//  chilkat\scream.jpg
//  chilkat\scream.xml
//  chilkat\cheese.xml
//  chilkat\bonaireFishing.html
//  chilkat\upload.html
//  chilkat\hello.txt
//  chilkat\HelloWorld123.txt
//  chilkat\hamlet.xml
//  chilkat\pigs.xml

success := zip.WriteZipAndClose();
if (success <> 1) then
  begin
    ShowMessage(zip.LastErrorText);

  end;

//  One last example -- combine DiscardPaths with PathPrefix
//  with multiple calls to AppendFiles:

//  Clear the zip object.
zip.NewZip('test6.zip');

zip.DiscardPaths := 1;
zip.AppendFromDir := 'c:/temp/filesToZip/';

//  Get all .gif files:
zip.PathPrefix := 'gif/';
zip.AppendFiles('*.gif',recurse);

//  Get all .jpg files:
zip.PathPrefix := 'jpg/';
zip.AppendFiles('*.jpg',recurse);

//  Get all .xml files:
zip.PathPrefix := 'xml/';
zip.AppendFiles('*.xml',recurse);

//  The zip will contain:
//  jpg\cheese.jpg
//  gif\dude.gif
//  gif\img3.gif
//  gif\img4.gif
//  gif\img5.gif
//  jpg\scream.jpg
//  xml\scream.xml
//  xml\cheese.xml
//  xml\hamlet.xml
//  xml\pigs.xml

success := zip.WriteZipAndClose();
if (success <> 1) then
  begin
    ShowMessage(zip.LastErrorText);

  end;
end;

 

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2007 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser