KpGb
Software
VCLZip Pro 4
VCLZip Pro 4.00 is now available
for registration.
- Complete support for password
protected, encrypted files
- Original PKZip standard encryption
- AES (AE-2) 128, 192, and 256 bit
encryption
- Zip64 capabilities, properties,
methods and events:
- Uncompressed, Compressed, and
Archive file sizes can be up to 2^63-1 bytes in length.
- You can compress up to 2147483647
files into an archive. This is compatible with PKZip's Zip64 format.
- Up to 999 split or spanned archive
parts
- If a file does not extend beyond
any of the original limitations (filesizes of 4 gig or 65535 files) then no
Zip64 format information is included in the archive.
- property isZip64 - tells you when
you are working with a zip file that is using Zip64 format.
- Uses the latest version of ZLib
1.2.3 for compression and decompression
- Create zip files fully compatable
with PKZip
- Completely native Delphi VCL(NO
DLL's!)
- Full support for Disk Spanning
Archives
- Zip directly from streams to zip
files
- Unzip directly to streams from zip
files
- Stream to Stream compression and
extraction
- Zipping from and Unzipping directly
to memory buffers
- Integrity checking of individual
files in archives
- Save Relative Path Information!
- Extract relative paths even when
archive contains full path info!
- Create and read Zip and File
Comments
- Correctly attach Self Extracting Zip
Stubs (16 bit and 32 bit distributable windows sfx stubs included, with
source)
- Create customizable 32bit SFX files,
with or without existing zip files
- Exclusion List - Determine what
types of files should not be in your zip files
- NoCompress List - Determine what
types of files should just be stored in your zip files
- Determine your own temp directory
- Lots of events
- Includes comprehensive Zip Utility
with source as demo
- Includes a stream zipping demo
- No Royalties
- Faster processing due to linking to
Zlib 1.2.3 object files for compression and decompression routines.
- Supports Delphi 4, 5, 6, 7, 2005,
2006, and 2007
- Supports BCB 4, 5, 6, 2006, and 2007
- Even Delphi 4 and 5 and BCB 4 and 5
support Zip64 format
- Blocked Zip Files (spanned zip
archives split onto hard drive)
- Now completely compatible with
PKZip and WinZip split archives file naming format.
- For backwards compatability you
can tell VCLZip to use the old VCLZip filenaming format by using the
BlockMode property.
- Event OnGetNextStream - Allows you
to zip from multiple streams when using the ZipFromStream method. This
improves performance since repeated calls to ZipFromStream causes the archive
to be updated on each subsequent call.
- NOTE: VCLZip Pro does not support the Deflate64
compression.
- Price is $99.95 per developer for the
first year of support. Renewals are only
$79.95.
Please visit the new VCLZip
Forums
where you will find a special forum just for
this purpose. If you prefer, you can send me email at
VCLZip-support@4warding.com
DOWNLOAD VCLZIP Pro 4.00 EVALUATION:
This evaluation is a complete
working version of VCLZip Pro and VCLUnZip Pro. The only restriction is that it
will only run while the Delphi or BCB IDE is up and running.
1) Run the following install program to
install the component files (DCU, DCR, OBJ, HPP and Package files) for your
version of Delphi or BCB. The help files are included in the installation
also.
VCLZipPro400b1_Eval.zip
2) Here is the file containing the Example
Demonstration Projects
(including a complete Zip Utility and a simple example using streams)
:
VCLZip4_Delphi_Demo_Zip_Utility.exe
(Delphi Project Code to the VCLZip zip utility example)
(The matching BCB Demo Zip Utility will
be uploaded shortly)
Contact vclzip-support@4warding.com
if you find any problems. Also, while not
required ofcourse, I would love to get an email message from you if you download
the evaluation just so I know. I promise I won't bother you.
:-)
Registration:
You may register VCLZip Pro
using one of the two following methods
1) SHAREIT REGISTRATION
SERVICE - Very
flexible as you can pay with your credit card over the internet on a secure
server. Or you can pay with cash, check ($US or Eurocheck), and a host of other
options. SHAREIT will automatically display instructions as well as send you an
email containing instructions for downloading the registered version
.
2) With a check
directly to me, but only if you can write
a $US check. Send me email (vclzip-support@4warding.com) for instructions and further
information.
I can always use feedback from anybody
that has tried out VCLZip. Be it good or bad I'd appreciate your opinions. If
you are looking for a zip library and choose another besides VCLZip, let me know
why so that I can take that into account for the future.
VCLZip News
Updates and History:
January 25th, 2008:
VCLZip Pro 4.00b3
- Fixed bug that did not allow you to
call CheckArchive right after zipping a file with AES compression without
closing and opening the file first or creating a new instance of VCLZip to
perform the CheckArchive.
January 25th, 2008:
VCLZip Pro 4.00b1
- Adds AES (AE-2) Encryption, 128,
192, and 256 bit
November 28th, 2007:
VCLZip Pro 3.10
- Fixes several bugs
- Now works with Delphi 2006, 2007,
BCB 2006, 2007
- Increased memory performance when
working with archives that contain a huge number of files
August 29th, 2005:
VCLZip Pro
3.06
- Fixes many incompatabilities with
WinZip
- Now works with Delphi 2005
- Several other various fixes.
August 7th, 2005:
VCLZip Pro 3.04
New ZLib methods for optimized
compression and decompression of single entities of data in standard ZLib
format, without the overhead of the PKZip format. This is excellent for
compression of data to be sent across the net, compressing web pages (http
compliant compression), blobs, etc.
- ZLibCompressStream
- ZLibDecompressStream
- ZLibCompressBuffer
- ZLibDecompressBuffer
- ZLibCompressString
- ZLibDecompressString
Overloaded TStream Methods for Delphi
4,5, BCB 4, and 5
- UnZipToStream
- UnZipToStreamByIndex
- ZipFromStream
Special OnGetNextTStream Event for
Delphi 4,5, BCB 4, and 5
- Allows zipping multiple TStreams in
one process
- More efficient than calling
ZipFromStream multiple times
Capability to use the latest version of
ZLib 1.2.1.
- VCLZip currently uses 1.1.4 by
default.
- By defining ZLIB121, VCLZip will use
the latest version of ZLib which is included with the registered version.
Some optimization improvements which
should show some improvement in zipping and unzipping speed when using
TkpStreams with D4, D5, BCB4, and BCB5.
October 7th, 2003:
VCLZip Pro is
here...
VCLZip Pro is now available for
registration. For those of you who are
currently registered users of VCLZip Lite, please send me an email at
mailto:vclzip@bigfoot.com
to receive a coupon number to enter and receive your discount making
VCLZip Pro only $40. Please do not ask for a coupon number unless you are
currently a registered user. Please include the name your registration was made
under and best of all if you still have it, your reference number that you
received when you registered. Anyone who registers VCLZip Pro as an upgrade that
is not a VCLZip Lite Registered user will not receive any support.
September 16th, 2003:
VCLZip Pro is
coming...
VCLZip has been quite stable over the
past year as you may have guessed from how long its been since I last updated
this web page. There have been very few bugs reported over that year. During
that time I have been working slowly on the next generation of VCLZip and now it
is about ready. In fact it is ready for you to evaluate. Just
click here
to have a look at what VCLZip
Pro has to offer.
You will notice that I now refer to the
original VCLZip 2.X as VCLZip Lite and the new VCLZip 3.X as VCLZip Pro. VCLZip
Pro is a major upgrade from VCLZip Lite as it allows you to zip an almost
unlimited number of almost unlimited size files. It is also faster now as it
uses the standard ZLib C library for its compression and decompression
engines.
While VCLZip Lite will still be
available, especially for those that need zip/unzip capabilities in the older
versions of Delphi (including Delphi 1) and BCB, all future enhancements will be
taking place with VCLZip Pro. In fact VCLZip Pro already has more features added
beyond VCLZip Lite including more properties, methods, and events.
Please do me (and yourself) a favor and
try VCLZip Pro out prior to it's being available for registration. Your feedback
will make it a better product. In some cases, some suggestions may still go into
the initial release, while others will be considered for follow-up releases.
There is a new
VCLZip Forum
where you can provide feedback and ask questions as well as swap ideas with
other VCLZip developers.
Pricing for VCLZip Pro is set to be
$89.95 per developer (7 registrations = site license) and $40 for an upgrade
from VCLZip Lite. Note that the price for an upgrade is only the difference
between the two registration costs as VCLZip Lite is still just $49.95. So don't
worry if you still want to purchase VCLZip Lite now, you won't lose out by
upgrading later. Also, keep in mind that those who purchased VCLZip for $49.95,
five years ago, have never paid for an upgrade since then. I don't charge yearly
support fees or anything like that. You get all the source code for all versions
of Delphi/BCB with registration of either verion of VCLZip.<
/FONT >
I expect that you should be able to
register VCLZip Pro in about 2 weeks. I'll keep you posted here but you will
find more up-to-date information on the forum. Please bear with me as I finish
updating the Help File and clean up other loose ends. See you in the
forum!
September 9th, 2002:
The registered version of VCLZip now
works with Delphi 7. You'll want to download the
BUG FIX UPDATE
FILE
to update VCLZip 2.23 to work with
D7.
April 22, 2002:
A list of the currently reported bugs
and their fixes can now be found
here
VCLZip 2.23 is now available
- Added the OEMConvert property. Filenames stored in a PKZip
compatible archive normally go through an OEM conversion to make them ascii
compatible. When opening the zip file the conversion is undone. If you do not
plan on having other zip utilities opening up your archives this conversion
process is not really necessary. Setting this property to False will eliminate
this process. The default value for this property is true for normal PKZip
compatability.
- Added OnEncrypt and OnDecrypt
events. These allow you to replace the standard pkzip encryption with your
own. Data is passed to these events a buffer at a time. Use this with care as
this is still somewhat experimental and I'm not sure how useful it is yet. You
must make all changes within the buffer sent in to you. Treat the entire file
as a stream. Byte for byte replacement only. No additional keys can be saved.
- Added the EncryptBeforeCompress boolean property. The default
for this property is False and if left like this VCLZip will behave like
normal. If set to True, VCLZip will encrypt each buffer prior to compressing
it instead of afterwards. This will cause files to not be decryptable by
normal zip utilities thereby adding a bit of extra security. However, this
feature is not that useful when using the standard PKZIP encryption because
that actually renders the data un-compressable beacuse it ramdomizes the data.
Often, small un-compressable files will be STORE'd insteand of DEFLATED in the
archive. Since, in this case, there is no compression,
EncryptBeforeCompression is irrelevant. Therefore, this property is most
useful when used with your own encryption technique (see OnEncrypt and
OnDecrypt above) as long as it does not randomize the data too much.
- Bugs Fixed:
- IMPORTANT!!! Behavior
of freeing the ArchiveStream (compressed stream) has been modified. VCLZip
will now no longer try to free ArchiveStream, you must free it yourself. This
was due to a problem where it would be freed automatically if there was a
problem with the ArchiveStream when trying to open it as a zip file (corrupt).
Best practice is that ArchiveStream should always point toward a TMemoryStream
that you create anyway.
- Modified the SFX code (the code used
to create the SFX stub distributed with VCLZip) so that it handles filenames
that have been run through an OEM Conversion. The SFX was losing accented
characters. This modification means that if you are creating zip files to be
used as SFX's you will want to leave the OEMConvert property mentioned above,
set to it's default value of True.
- Fixed the SFX code so that it works
properly if you use Copy /B to concatenate a zip file to the stub. Due to a
Delphi strange behavior sometimes path names for directory only entries would
become corrupted.
- Modified so that when cursor is
changed to hourglass by VCLZip, previous cursor is saved correctly instead of
just changing it back to default cursor.
- Now saves Central Directory Extra
Fields correctly.
- Removed reference to QConsts,
replaced with RTLConsts.
- Sometimes a GPF would result if a
corrupt zip file was opened.
- Due to a Delphi strange behavior
sometimes path names for directory only entries would become corrupted.
- Using a wildcard in pathname added
to FilesList did not work.
- Using '*.*' as a wildcard in files
added to FilesList now is the same as using '*'.
- VCLZip will now check for
CancelTheOperation during initial building of the fileslist instead of just
during compression processing.
- Added a final call to
OnTotalPercentDone with 100% because this didn't always happen.
- Attributes were not getting set
correctly for directory-only entries.
- Fixed a problem that was not
allowing ZipComment's to be added correctly to spanned or blocked zip files.
Not the same fix as in 2.22.
- Directories (directory-only entries)
were not being restored properly unless DoAll was True.
- You were unable to delete a
directory from which files were recursively zipped until exiting your
application.
July
21st, 2001:
Version 2.22 is now available for download. Here are the major bug fixes
and enhancements:
- Now Delphi 6 compatible.
- New event called OnRecursingFile
which gets called as VCLZip recurses directories searching for files that
match a wildcard that is entered in the FilesList. This gets called each time
a file matches the wildcard.
- Fixed a bug which kept diskettes
from being labeled when creating spanned zip files on WIN31.
- Fixed a bug which sometimes did not
allow zip comments to be added to blocked zip sets.
- Fixed a bug which caused VCLZip to
not properly handle the IncompleteZip exception on spanned zip sets unless you
called ReadZip prior to calling UnZip.
December 12th, 2000:
Version
2.21
- IMPORTANT: Changed default for FileOpenMode back to fmShareDenyNone as it had been
for all but version 2.20. This means that VCLZip will backup files that are
open by default. If you don't want this, then please add code to set
FileOpenMode to what you desire.
- When working with temporary files,
VCLZip will now rename, instead of copy, the temp file if the destination is
on the same drive. This will speed up the adding of files to an existing zip
file when the resulting zip file is very large.
- New event called OnPrepareNextDisk which is an event that will allow
you, when creating spanned zip files across diskettes, to do things like
format a diskette that has just been inserted, or to add or delete files from
the diskette before continuing with the zipping process.
- Fixed a problem that was causing the
CancelTheOperation Method to not work properly.
- Fixed bug which caused VCLZip to
miscalculate space needed for zfc file if wildcards are put into the
FilesList.
- Fixed bug so you could have FilePercentDone without
needing TotalPercentDone when creating spanned zip files
- Fixed so relative_offset set
correctly for spanned zips. Side effect of removing needless write of header.
- Added code to read local fileheaders
if exception thrown when reading a central fileheader.
- Fixed problem where directories
couldn't be created from directory entries because the fullpath wasn't known
yet. Result of having moved this code to earlier.
- Fixed typo in creation of LOC header
values which could cause error if reading local headers. Changed so Zip
Comment starting position is calculated based on end of central record instead
of end of file.
- Fixed a problem where drivepart
(i.e. C:\) was not being stripped when saving relative paths.
- Added a BufferedStreamSize property which can increase the
speed of creating zips to floppy (and other slow media) dramatically. The new
default for this should increase the speed by as much as 3 times, but you can
now tweak this especially for your application!
- Fixed a problem where zip comments
in zfc files were not being read correctly.
- Added a setZipSignatures procedure which allows you to modify
the signatures of your zip file. This will cause other zip utilities to not be
able to recognize or read your zip files created with VCLZip. Useful if you
want to add further security to your zip files.
- Some zip files would not open
correctly, throwing an incomplete zip file exception due to an erroneous
"extra field length" identifier in headers of some compressed files. These zip
files are rare, but a very few people seemed to have several of them. This
problem would not affect zip files created by VCLZip, and this problem should
only occur in VCLZip 2.20, not in any previous version.
- If you had Range Checking turned on,
VCLZip would get a range check error when using a wildcard that ended with a *
as in 'somefile.*'.
- Under certain circumstances, drive
information would not be stripped from path information if zipping recursively
(including subdirectories)
- "Retrying" to zip a file that could
not be opened using the OnSkippingFile event would not always work correctly.
- Creating spanned zip set to floppy
should be faster now due to removing a needless header write to disk for each
file.
- VCLZip would not compile correctly
with MAKESMALL defined.
- Added code to make VCLZip work with
BCB5. Haven't tested this yet though since I don't have BCB5 myself yet.
- Added readonly boolean ImproperZip property which will be set to True when
some sort of problem is found when opening the zip file, even if recoverable.
This property will be enhanced and refined in the future.
- If KeepZipOpen is set to True, when
putting in the wrong disk in a spanned zip set, VCLZip would not always
properly close the file on the old diskette before trying to open the file on
the next diskette.
- Added ECantWriteUCF exception which will be thrown if
VCLZip runs out of room to write the uncompressed file when unzipping.
- Timestamp was not being set properly
when unzipping readonly files. Moved setting of the timestamp to before the
attributes get set.
December 20th, 1999:
Version 2.20 is now available. There are new features in the following
categories:
Performance
There are a few code optimizations that should speed up the
zipping process slightly.
Spanned Zip
Files
A new feature, turned on with the
SaveZipInfoOnFirstDisk allows VCLZip to create
spanned zip files that can be opened starting with the first disk
instead of the normally required last disk of the spanned disk
set by saving a Zip Configuration File
on the first disk. This feature can be used even if creating the
spanned zip file directly to your hard drive. The spanned zip
file is still pkzip compatible and can still be opened by other
zip utilities from the last disk.
A new property, SaveOnFirstDisk, allows
you to save room on the first disk when creating a spanned zip
file, to allow
room for other files, such as setup programs, data files.
Spanned zip files can now be directed toward disks greater than 2
gig in size as long as you are using Delphi 5 or BCB 4.
UnZipping
The new Selected indexed property
offers another way to flag files to be unzipped. Files that have
the Selected
property set to True can be unzipped using the
UnZipSelected method. The Selected property will be
cleared
(set to False) for each file as it is unzipped, but you can also
call the ClearSelected method to clear
them all. At anytime
the NumSelected property can be checked
to see how many files have been selected.
Also, the UnZipToBufferByIndex and
UnZipToStreamByIndex methods allow you to
unzip files specified
by their index instead of by name or wildcard.
The BufferLength property allows
buffered output (buffer smaller than the total uncompressed
filesize) when unzipping
directly to memory. This will cause the
OnGetNextBuffer Event to be called everytime
BufferLength bytes have been
output by VCLZip.
Modified to work in all ways with zip files that have "extra
fields" in their headers. These tend to be quite rare, but
they do show up from time to time.
Zipping
Added a property called FileOpenMode which allows you to define the file open
mode for files when they are opened to be zipped.
Added a Retry parameter to the OnSkippingFile
Event that can be used to re-attempt to
open a file for zipping that is open by another process. This gives the chance
to close the file and continue with the zipping process rather than having to
start over again.
Added a ENotEnoughRoom exception which will be thrown
if there is not enough room to write to the archive, i.e. out of
disk space.
The new OnUpdate Event gets fired when
updating or freshening an existing archive. It is triggered for
each file that already
exists in the archive as it is either replaced or kept in the
updated archive.
The AddDirEntriesOnRecurse property
will cause separate directory entries to be included in archives
when doing recursive zips through
subdirectories.
Integrity
Checking
A new method, CheckArchive, will
perform an integrity check on all files in an archive. This is
much faster than using FileIsOK
on each file if testing all files in an archive with VERY MANY
files.
Further improved checking for corrupted zip files when opening
zip files.
Encryption
The following new properties and methods allow lower level work
with password encrypted archives:
DecryptHeader
Property - Gets the decryption header for a
particular compressed file in an archive
GetDecryptHeaderPtr
Property - Same as DecryptHeader but easier to use
in BCB.
DecryptHeaderByte Method - Tests a
password against the decryption header found in the DecryptHeader
property.
GetDecryptHeaderByteByPtr Method - Same
as DecryptHeaderByte but easier to use in
BCB.
Self Exctracting Executable
Changes were made to the ZIPSFX32.BIN
stub itself:
- Modified to work with zip files
containing "extra fields" in their headers.
- Modified to change mouse cursor to
an hour glass during processing.
- Check for correct file size is now
done automatically
- Now uses the end of central and
central headers to find the first local header.
- Added a progress meter
- Better checking for corrupted zip
files.
- Added an information window that can
optionally be shown when the sfx is initially started
Miscellaneous
The behavior of the OnInCompleteZip
Event has been greatly improved. You can now use
this event to ask the user to
insert the last disk of a spanned disk set rather than having to
handle this situation from outside VCLZip.
The Help File was
improved.
April 18th 1998:
There are lots of new features and
improvements for version 2.18. Read the list closely to find ones that are most
important to you:
1) Thanks to the hard work
of a fellow registered user, added the capability to remove all
dependencies on the Dialogs, Forms, Controls, and FileCtrl units
by defining the conditional MAKESMALL, which
results in a smaller footprint. This can be quite useful when
putting VCLZip into a DLL for instance. In order to make this
work, go into your Project | Options and select the
Directories/Conditionals tab and enter MAKESMALL in the
conditional defines text box. In Delphi you can add this
conditinal define to the project options of your application that
uses VCLZip and then do a "build all". In BCB you will
have to add this to the project options of the package that
contains VCLZip and then rebuild the package.
If you define MAKESMALL, the only things you
lose are:
a) ZIP file open dialog box that appears when the ZipName is set
to "?"
b) Select Directory dialog box that appears when the DestDir is
set to "?"
c) Changing the cursor to an hour glass during some
operations.
d) No long filename support in Delphi 1
2) Made VCLZip completely BCB4
compatible.
3) Added some exception handling to KPUNZIPP and
KPINFLT, mainly to handle unexpected situations when wrong
passwords are entered. This fixes the problem with PRP, the
password recovery program.
4) For Borland C++ Builder,
changed any COMP types to double, getting rid of the compiler
warnings for unsupported comp type. This affects the
OnStartZipInfo and OnStartUnZipInfo events, so you'll have to change the comp parameter to double
in these events if you use them (in both your header files and in
the CPP files).
5) Modified OnStartUnZip event so that FName
(the filename of the file that is about to be unzipped along with
complete path) is now a VAR parameter and can be modified. This
allows you to change the path and name of a file that is about to
be unzipped. This is especially helpful in applications like
Install Programs.
NOTE: You will need to change your
current code to add the VAR to the event definition and
implementation if you already use this event in your application.
(In BCB, add a & just before the parameter instead of
VAR)
6) Moved many type definitions to VCLUNZIP.PAS
so that kpZipObj won't have to be included in your USES
list.
7) Fixed bug that caused GPF when setting Zip
Comment to '' (empty string).
8) Moved strings in VCLZip/VCLUnZip into a
string table, making the code size a little smaller as well as
making it much easier to localize string information. However you
have the option of not using the new string table, for whatever
reason, by defining NO_RES in your project options (in the
conditional defines text box on the Directories/Conditionals
tab).
9) Removed the need for several files. No longer
included are kpstrm.res, kpstrm.rc, kpsconst.res, kpsconst.rc,
kpstres.pas, and for Delphi 1, kpdrvs.pas. In some cases the need
for these files was eliminated and in other cases just rolled
into the newly included kpzcnst.rc, kpzcnst.pas, and kpzcnst.res.
Definining NO_RES in your project options will
elimiate the need for these new files but will make your code
size slightly larger and you won't be able to localize your
application without changing VCLZip source code.
10) Modified the OnFilePercentDone and
OnTotalPercentDone progress events to work better when creating
spanned disk sets and blocked zip sets. They no longer report
100% when the compressed file still has to be copied to disk.
11) Added the ReplaceReadOnly property. Setting
this to true will allow files with the ReadOnly attribute to be
replaced during the unzip process.
12) Added the ifNewer and
ifOlder options to the OverwriteMode property.
(This had somehow made it into the help file but not into
VCLUnZip)
13) Added the SFXToZip method
which will convert an SFX file to a regular zip file. The header
pointers will be properly adjusted during the conversion.
14) Fixed a problem where the OnGetNextDisk
event would always revert to the DefaultGetNextDisk method
instead of what you entered into the Object Inspector each time
your project was re-opened.
15) Fixed a bug that caused CRC errors when
unzipping files from spanned disk sets if they were STORED (no
compression) and spanned across disks.
16) Added the OnZipComplete and
OnUnZipComplete events. If defined, these will
fire at the very end of a zip or unzip operation (after all files
have been processed, not after each file). These events will
rarely be used since, normally you will be able to do the same
thing at the point that the call to Zip or UnZip returns, but
these events can be useful when using VCLZip in threads where in
certain circumstances the return from the Zip or UnZip methods
are not seen.
17) Creation of SFX files has never been
easier!!! The addition of the
MakeNewSFX method allows you to create Self Extracting
Executables without the need to create a zip file first. The
files that you specify in the FilesList property will be zipped,
using all the normal VCLZip property settings, and the SFX will
be created, all in one step! In addition, you can create
configurable SFX files using this method, and you can do this
especially easy by adding the new unit kpSFXOpt to your
application's USES list and using the new 32bit SFX stub that
is now distributed with VCLZip. This allows you to easily set
things like SFX Dialog caption, default target extraction
directory, file to launch after extraction, etc.
18) Fixed a memory leak that only affects
applications using VCLZip that are compiled with Delphi 2, and
that use wildcard specifications in the FilesList property.
March 1st 1998:
I've added an evaluation version and a demo
project for C++Builder 3. Please let me know if I have left anything out of
these as this is a first pass, so please bear with me. I have not yet modified
the help file yet for BCB, so for now, you'll have to go by the Delphi help file
(for the most part just use the C pointer reference '->' instead of the usual
Delphi '.'). The demo project is pretty much the same complete Zip Utility
example that comes with the Delphi demos except that it has been completely
re-written in BCB 3. I'll be re-writing the Streams example in BCB too given
time. I'll work on adding a simpler example project too.<
/FONT>
Feb
17th 1998:
Version 2.17a is now available for download. Just some minor bug fixes are all that will be found in this
version:
- Fixed a bug that was keeping VCLZip
from reading truncated zip files or sfx files that did not have their headers
adjusted.
- Fixed a bug that was causing a
directory to be created on the C drive when doing integrity checking with the
FileIsOK property.
- Added {$V-} to kpZipObj.PAS
- Moved two AssignTo methods to public
instead of private in kpZipObj.PAS
Registered users who already
downloaded the source for version 2.17 may retrieve a smaller zip file with only
the modified files in it.
Feb
8th 1998:
VCLZip 2.17 is now available in the download area. I had not planned on any upgrades before version 3.0, but a
lack of time to devote to version 3.0 development prompted me to a new version
with some of the features that people have been asking for. New in version 2.17
are:
- Added Memory zipping and unzipping
capabilities through the UnZipToBuffer and ZipFromBuffer methods. See the
documentation for these methods in the Help File for more information.
- New FileIsOK[Index] Property allows
you to check for the integrity of individual files within an archive without
actually unzipping the file. Returns false if the file may be corrupted.
- Fixed a bug that kept checking of
volume labels from working on WIN31 when working with spanned disk sets
- Removed all references to
ChDirectory so that VCLZip will be more thread safe allowing separate
instances of VCLZip in separate threads to be performing zip/unzip operations
at the same time.
- A new public property PreserveStubs
allows you to make modifications to sfx archives and have the archive remain
an SFX rather than revert back to a normal zip file
- Added a default OnGetNextDisk event.
If one is not defined, then the default event will be called when the
situation arises that a new disk is needed when zipping or unzipping a spanned
or blocked zip archive.
- Added more power to the wildcard capabilities. Now you can
qualify the * wildcard character, for instance:
*<a-e> would satisfy any number of contiguous characters as
long as they are all a thru e.
*<!a-e> would satisfy any number of contiguous characters
as long as none of them were a thru e.
This allows you to do things like include files in specific
direcories into your ExcludeList. For instance:
VCLZip1.ExcludeList.Add('c:\test\*<!\>.txt')
would exclude the zipping of all
.txt files in the test directory but not in any subdirectories.
- Fixed other minor bugs and made
other code enhancements.
I still don't have a guess as to a
date that version 3.0 will be available. I'll post information as soon as I do
though.
PLEASE let me know if you find any
problems at all with version 2.17.
October 25th 1997:
VCLZip 2.16 is now the production
version. If you previously downloaded version 2.16 (as a beta) you should
download this newer version as there have been a few bug fixes.
October 4th 1997:
VCLZip 2.15 is now the production
version when you register. VCLZip 2.16 is now available for download and it is
now currently considered to be the beta release. It is also the evaluation
version.The only real change in VCLZip 2.16 is a change in how the
OnSkippingFile now works. OnSkippingFile will now correctly be called when
VCLZip tries to zip a file that is locked by another application. As always,
VCLZip will continue with the next file, but previously you were not notified
that such files were skipped in the zip process.
This does however make VCLZip 2.16
slightly backward in-compatible with version 2.15 and earlier if you are using
the OnSkippingFile event, because of an additional parameter. Please see the
OnSkippingFile Event in the Help File for details on the difference between the
version 2.15 and and 2.16 implementations.
The source code for VCLZip 2.16 is
also available to registered users.
October 4th 1997:
VCLZip 2.15 is now available for download.
For registered users it will be considered to be a beta for about
another week. Modifications for 2.15 include:
- PackLevel can now be set to 0 (zero)
which means no compression at all (STORED only).
- New property ExcludeList is a new
stringlist that you can add filenames and wildcards to in order to specify
files that you do not wish to be included in an archive.
- New property NoCompressList is a new
stringlist that you can add filenames and wildcards to in order to specify
files that you wish to be STORED with a PackLevel of 0 (zero), no compression.
- All compiler warnings and hints were
removed.
August 31st 1997:
A bug was found in the evaluation version of VCLZip only, so a new 2.14
distribution is now in the download area. The effect of the bug was to not allow
the evaluation version to work properly if the VCLZip component was created
dynamically rather than statically dropped on a form. This problem ONLY affected
the evaluation version, so if you are already a registered user, you do not need
new source code.
August 26th 1997:
An evaluation version of VCLZip 2.14
is now available.
August 13th 1997:
- Version 2.14 is now available to
registered users. This version includes the following changes:
- Delphi 4 compatability.
- Added ability to use complex
wildcards when specifying which files are to be zipped. This includes wildcard
characters not only in the filename but also in the pathname. This allows you
to specify directories using wildcards, for instance:
VCLZip1.FilesList.add('c:\test\w*\mycode*.pas');
would get all PAS files beginning with mycode
in subdirectories under TEST that begin with the letter w.
Wilcards may be much more complex than this. Please see the help
file for more information.
- Added the ability to override the
RECURSE property setting when specifying files to be zipped. This avoids
having to use multiple zip operations to achieve the same results. By adding
the following characters to the beginning of the filenames being added, you
can override whatever the current setting is for the RECURSE property:
'>' will force recursion into
subdirectories
'|' will force
NO-recursion
For instance:
VCLZip1.FilesList.add('>c:\windows\*.ini');<
/FONT>
will get all .ini files in and below
the windows directory regardless of what the recurse property setting
is.
and:
VCLZip1.FilesList.add('|c:\windows\sys*\*.dll');
will get all .dll files in
subdirectories of the windows directories that start with 'sys' but will not
recurse into any directories below the sys*
directories.
- The [ and ] characters previously used as
special wildcard characters have been changed to < and
> since [ and ] are valid filename characters.
If you still need to use the previous characters for backward compatability, I
can show registered users how to easily modify a couple of constants in the
source code in order to go back to the old style. See "Using Wildcards" in the
help file for more information.
- A few bug fixes.
Unfortunately an evaluation version of
2.14 isn't quite ready yet. It will be uploaded as soon as possible.
July
10th 1997:
VCLZip 2.13 beta is now available to
registered users. A demo of the new version should be available soon. The
changes for this version include:
- New boolean property,
ResetArchiveBitOnZip, causes each file's archive bit to be turned off after
being zipped.
- New boolean property,
SkipIfArchiveBitNotSet, causes files who's archive bit is not set to be
skipped during zipping operations.
- A few modifications were made to
allow more compatibility with BCB 1.
Also, the Help
File was
improved somewhat. It includes information on the new properties and was cleaned
up a little too. You can download that now.
May
10th 1997:
VCLZip 2.12 is now available and it is
now the current production version. I even snuck a new feature into this one!!
The changes included in this new version are:
- Added a TempPath property to allow
you to determine where VCLZip will create temporary files.
- Modified VCLZip so that any
temporary files created will have unique names to avoid any filename clashes
in the temporary directory. This also fixes problem working with archives that
reside in the temporary directory.
- Fixed a RelativePaths bug
- Fixed a bug which caused a "list out
of bounds" error if a file in the FilesList doesn't actually exist
Download version 2.12 now and try it
out!!!
May
3rd 1997:
I have added a bug list to this web site in
order to keep you up-to-date on the status of bug-fixes. If you
experience something that appears to be a bug, check the
bug list to see if it may have already been
reported. If it has been fixed and you need the fix before the next version will
be available, send me an email to see if I can supply you with the source code
patch (that is, if you are a registered user ofcourse). If your problem does not
appear on the bug list then please report your problem to me and I'll add it to
the list.
April 29th 1997:
Version 2.11 Beta is now available. It
fixes the following problems which were found in the 2.10 Beta:
- Fixed password encryption bug for 16
bit.
- Fixed "invalid pointer operation"
when closing application bug.
- Fixed path device truncation bug
which caused inability to modify existing archives in 16 bit.
- Fixed problem with canceling during
wilcard expansion bug.
- Added capability to better handle
corrupted timestamps.
- Added capability to open and work
with SFX files that were created with the COPY/B method (header files not
adjusted).
- Other small bug fixes and code
improvements.
April 13th 1997:
I found that I accidentally had the
2.10 beta download links pointing at the same files as the 2.03 downloads. I've
fixed those links and am close to uploading a new beta (2.11). I found the
following problems that the new beta will address:
- Creating archives with passwords
does not work in 16bit VCLZip (this includes all versions). Unzipping password
encrypted files does work however. This will work in the new 2.11 beta due to
be out soon.
- Modifying an existing archive does
not work under the current 2.10 beta for 16bit VCLZip. This will work under
the new 2.11 beta.
March 29th 1997:
VCLZip 2.10 is now available in
BETA form. It appears to be stable but
more testing is required. Let me know if you have any problems
using version 2.10. This version has some new
features...
- 16 bit VCLZip will now, by default,
store long file and path names when running on WIN95 or NT.
- New property (Store83Names) allows
you to force VCLZip to store only DOS 8.3 format file and path names.
- Better UNC path support.
- Fixed a bug allowing files to be
added to empty archives.
March 13th 1997:
VCLZip 2.03 is now available. This
point release fixes sevaral bugs that were found, mostly related to using VCLZip
with Delphi 1 as well as a couple other bugs.
- Volume labels now get written
correctly to spanned disk sets in Delphi 1 for all versions of Windows.
- Delphi 1 VCLZip now correctly
recognizes when it is running on Windows NT.
- Fixed a problem with zipping files
in the root directory when StorePaths = True <
/FONT >
- File and Zip Comments are now read
correctly from spanned/blocked zip archives.
- Fixed a bug that was causing
"Duplicate Object" errors.
February 15th 1997:
VCLZip 2.02 is now available.
Modifications include:
- Fix for file comments which were
supposed to be fixed in version 2.01 but weren't.
- Fix for stream zipping. Version 2.01
would not create a new archive if using a stream. (The Stream Demo now allows
creating new zip files to streams too)
- A few other minor modifications to
further solidify the code.
- A modification to the Zip Utility
Demo which allows unzipping from Blocked zip files as if they were single zip
files.
- Added a read-only, published
ThisVersion property which reflects the version of the VCLZip/VCLUnZip that
you are currently working with.
February 8th 1997:
VCLZip 2.01 is now available.
Modifications include:
- Fixes for exceptions that were caused when
CANCELING a zip or unzip of a
spanned zip file.
- Fix for a possible problem when zipping or
unzipping a spanned zip file
when one or more of the compressed files resided
on more than 2 of the spanned
parts.
- Fix for file comments which were
broken in version 2.00.
January 26th 1997:
VCLZip 2.00 is now available as the official
version of VCLZip. Download
a complete working demo version of VCLZip
2.00 and try it out!
New features of this version
include:
- RelativePaths is a new VCLZip property
giving you the option to store relative path information for each
file
instead of complete path
information.
- The RootDir property will now allow
you to extract files from an archive that was not previously compressed using
the RelativePaths property as if it had been.
- ArchiveStream is a new VCLUnZip
property allowing you to work with archives as in-memory TStreams. The Stream
Demo now uses this property demonstrating stream to stream zipping/unzipping.
- OnStartZipInfo Event now allows you
to add a zip comment to a new archive
- OnStartZip Event now allows you to
modify information that is stored with each file just before it is zipped.
- OnBadPassword Event now allows you
to reset the password and retry the same file again.
- DateTime Property is now also
writable along with Filename and Pathname
- Busy Property is a new property set
to True during Zip and UnZip operations.
- VCLZip is now completely Delphi 1
compatible for both compression and decompression.
- VCLZip will no longer include the archive
that is currently being created in itself when the archive is
being created in the same
directory as files are being zipped from, when
wildcards would otherwise include the archive.
I can always use feedback from anybody
that has tried out VCLZip. Be it good or bad I'd appreciate your opinions. If
you are looking for a zip library and choose another besides VCLZip, let me know
why so that I can take that into account for the future.
Contact vclzip-support@4warding.com
for further
information