Description of API
functions - Delphi/Pascal style
function zOpenZipFile(zipfilename : pchar): integer;
stdcall;
This function opens zip file and creates a list of
items, corresponding to contents of zip file. Must be called before any
other function to get access to zip file. ZipFileName is the path
and full name of zip file, for example: 'C:\TEST.ZIP'. Returns zero on
success.
function zCloseZipFile: integer;
stdcall;
Closes zip file, opened with zOpenZipFile.
Returns zero on success.
function zGetTotalFiles : integer;
stdcall;
Returns the total number of compressed files within
zip file, i.e. the number of items in the list. First item has index =
0, last item has index = zGetTotalFiles-1
function zGetTotalBytes : integer;
stdcall;
Returns the sum of uncompressed file size of all
files within zip file.
function zGetSelectedFiles : integer;
stdcall;
Returns the number of currently selected files.
function zGetSelectedBytes : integer;
Returns the sum of uncompressed file size of selected
files within zip file.
function zGetLastErrorAsText : pchar;
stdcall;
If some error occurs in the DLL, this function will
return the string, describing the error.
function zGetSkippedFiles: integer;
stdcall;
After extracting operation, this function will return
the number of skipped files - usually zero.
function zGetRunTimeInfo(var ProcessedFiles,ProcessedBytes
: integer): boolean; stdcall;
This function returns the number of currently processed
files and bytes. This is necessary to calculate position of progress indicator.
Returns true on success.
function zCancelOperation : boolean;
stdcall;
To cancel compress or extract operation, call this
function.
function zExtractOne(ItemNo: integer;ExtractDirectory,Password:
pchar;
OverwriteExisting, SkipOlder, UseFolders,TestOnly :
boolean;RTInfoFunc: pointer) : integer;
Extracts only one of the file in zip file. This is
useful for viewing/launching files. Parameters are:
ItemNo - Item number of the file in the
list.
0<= ItemNo <= zGetTotalFiles-1
ExtractDirectory - Directory where to extract files. If empty, current directory is used.
Password - password to be used, if file is encrypted.
OverwriteExisting - if true, any existing file will be overwritten, otherwise will be skipped.
SkipOlder - if True, files with newer date/time on the disk will not be overwritten.
UseFolders - if true, the relative path information stored in zip file will be used to determine location of the extracting file.
TestOnly - if true, files are only tested, not saved to disk.
RTInfoFunc - pointer to the application function, which will be called periodically (after 1 sec) from the library to show runtime information, for example some kind of progress bar. Within this function, application can call zGetRunTimeInfo or zCancelOperation. If nil, no runtime information will be available.
Return value is zero on success, otherwise application
can call zGetLastErrorAsText to get type of error.
function zExtractSelected(ExtractDirectory,Password:
pchar;
OverwriteExisting, SkipOlder, UseFolders,TestOnly :
boolean;RTInfoFunc: pointer) : integer;
stdcall;
Extracts only files in the list, previously selected
by zSelectFile. Parameters are the same as in zExtractOne.
Returns zero on success.
function zExtractAll(ExtractDirectory,Password:
pchar;
OverwriteExisting, SkipOlder, UseFolders,TestOnly :
boolean;RTInfoFunc: pointer) : integer;
stdcall;
Extracts all files. Parameters are the same as in
zExtractOne.
Returns zero on success.
function zGetFileName(i : integer) : pchar;
stdcall;
Returns the name of the file in the list with index
i.
function zGetFileExt(i : integer) : pchar;
stdcall;
Returns the extension of the file in the list with
index i.
function zGetFilePath(i : integer) : pchar; stdcall;
Returns the stored path of the file in the list with
index i.
function zGetFileDate(i : integer) : integer;
stdcall;
Returns the MSDOS date of the file in the list with
index i.
function zGetFileTime(i : integer) : integer;
stdcall;
Returns the MSDOS time of the file in the list with
index i.
function zGetFileSize(i : integer) : integer;
stdcall;
Returns the uncompressed size of the file in the
list with index i.
function zGetCompressedFileSize(i : integer) :
integer; stdcall;
Returns the compressed size of the file in the list
with index i.
function zFileIsEncrypted(i : integer) : boolean;
stdcall;
Returns true, if file in the list with index i is
encrypted.
function zGetLastOperResult(i : integer) : pchar;
stdcall;
Returns the result of the last operation on the file
in the list with index i, where 0 =< i < number of processed
files . Usually 'Ok.'
function zFileIsSelected(i : integer) : boolean;
stdcall;
Returns true, if file in the list with index i is
selected.
function zSelectFile(i: integer;how : boolean):
boolean; stdcall;
Select/Unselect file in the list with index i. If
how is true, the file will be selected, otherwise will be unselected.
function zUnselectAll(): boolean; stdcall;
To unselect all files in the zip archive, call this function.
function zSelectByWildcards(FileMask: pchar; IncludeSubfolders: boolean): boolean; stdcall;
Selects files in the zip archive using wildcard pattern.
Parameters:
FileMask - Wildcard pattern to be used, for example: "C:\TEST\*.TXT; *.DOC"
IncludeSubfolders - If True, the subfolders will be searched too for matched files.
Return: Zero on success, otherwise an error code.
function zCreateNewZip(ZipFileName: pchar) : integer;
stdcall;
Creates new empty zip file with name ZipFileName,
for example: "C:\temp\test.zip". Returns zero on success.
function zOrderFile(FileName, StoredName : pchar; UpdateMode : integer) : integer; stdcall;
Call this function after zCreateNewZip or zOpenZipFile
for every file, which must be included in the Zip file. The function checks
if the file already exists in the archive, date and time of the file depending
of the UpdateMode, and if the conditions are true, adds the file
to the list of "to be compressed files". Parameters are:
FileName - the full path and name of the file, for example: "C:\TEMP\TEST.TXT"
StoredName - this is the path and the name, under which the file must be stored in zip file, for example: "TEMP\TEST.TXT".
UpdateMode - points if the file must be added if it is already exists in the archive. There are 3 possible values:
0 - "Add (and Replace) file", if file does not exist in the archive, it will be added, if exists, it will be replaced.
1 - "Freshen file", file will be compressed only if it already exists in the archive and is newer.
2 - "Update file", file will be compressed
if does not exists in the archive or if it exists, but is newer.
The return value is zero if the file is successfully
added to "Add List".
function zOrderByWildcards(FileMask, BasePath: pchar; IncludeSubfolders, CheckArchiveAttribute: boolean; UpdateMode : integer) : integer; stdcall;
Call this function to select many files to be compressed using a wildcards pattern. Parameters are:
FileMask - The wildcard pattern to be used, for example: "C:\TEST\*.TXT; *.DOC"
BasePath - This is the shared part of the path to be excluded from all selected files, when they will be stored in the archive, for example: "C:\TEST\".
IncludeSubfolders - If True, the subfolders will be searched too for matched files.
CheckArchiveAttribute - If True, only those of the files will be added, which have set "Archive" attribute.
UpdateMode - points if the file must be added if it is already exists in the archive. There are 3 possible values:
0 - "Add (and Replace) file", if file does not exist in the archive, it will be added, if exists, it will be replaced.
1 - "Freshen file", file will be compressed only if it already exists in the archive and is newer.
2 - "Update file", file will be compressed if does not exists in the archive or if it exists, but is newer.
Return: Zero on success, otherwise an error code.
function zCompressFiles(TempDir, Password: pchar;
CompressionMethod : integer; ResetArchiveAttribute: boolean; SpanSize: Integer; Comment: String; RTInfoFunc:pointer) : integer; stdcall;
Call this function to actually compress the files,
previously requested with zOrderFile/zOrderByWildcards. Parameters are:
TempDir - the temporary directory to be used. If it is empty, the default Windows temporary directory will be used.
Password - if is not empty, the files will be encrypted with this password.
CompressionMethod - there 4 possible values:
0 : Stored, no compression
1 : Fast compression
2 : Normal compression
3 : Max compression
ResetArchiveAttribute - if it is true, the
Archive attribute of the file will be reset after the compressing of the
file.
SpanSize - There are 3 cases here:
< 0 : Disabled - spanning is not allowed.
= 0 : Automatic - automatically prompt for another diskette when the current one is full. Applicable only for removable drives.
> 0 : Custom - multi-volume zip archive will be created and this value will be the maximum size of each volume. Applicable only for non-removable drives.
Comment - if is not empty, will be stored as a comment in the zip file.
RTInfoFunc - pointer to the application function,
which will be called periodically (after 1 sec) from the library to show runtime information,
for example some kind of progress bar. Within this function, application
can call zGetRunTimeInfo or zCancelOperation. If nil, no
runtime information will be available.
Return value is zero on success, otherwise application can call zGetLastErrorAsText to get type of error.
Do not forget to close the zip file with zCloseZipFile.
function zDeleteFiles: integer; stdcall;
function zGetOrderedFiles: integer; stdcall;
Returns the number of files requested for compression with functions zOrderFile/zOrderByWildcards.
function zGetOrderedBytes: integer; stdcall;
function zGetComment: pchar; stdcall;
function zIsSpanned: boolean; stdcall;
Removes the selected files from the zip archive. Returns zero on success, otherwise an error code.
Returns the total size of files requested for compression with functions zOrderFile/zOrderByWildcards.
Returns the comment stored in the zip archive.
Returns true if the opened zip file is spanned on many disks/volumes.
Tasks
To create a zip file and add (compress) file into it
step 1. create the zip file
x = zCreateNewZip('ZipFileName.zip')
step 2. do one time for every file to be added to the zip
y = zOrderFile('FullPath_and_FileName.txt',
'ShortFileName', Update_mode)
step 3. write the zip file to disk
x = zCompressFiles('TempDir',
'Password', compress_type, Reset_Archive_Bit, SpanSize, Comment, Progress_Function)
step 4. close the file
x = zCloseZipFile()
if x <> 0 in each of above there was an error
To extract (decompress) all files from a zip file
step 1. open the zip file
x = zOpenZipFile('ZipFileName.zip')
step 2. extract the files to disk
x = zExtractAll('Extract_Directory',
'Password', Overwrite_Existing, Use_Folders, Test_Only, Progress_Function)
step 3. close the file
x = zCloseZipFile()
if x <> 0 in each of above there was an error
List of error codes
ERR_CMPR_DATA = 1;
The structure of ZIP file is damaged
ERR_OLD_METH =
2; Old compression method is used
ERR_READ_FILE = 3;
Cannot read from file
ERR_OPEN_FILE = 4;
Cannot open file
ERR_WRITE_FILE = 5;
Cannot write to file
ERR_CREATE_FILE = 6;
Cannot create new file
ERR_RUN_TIME =
7; Error in runtime info function
ERR_USER_BREAK = 8;
User break
ERR_FILE_EXISTS = 9;
File already exists
ERR_DELETE_OLD = 10;
Cannot delete the old zip file
ERR_RENAME_TEMP = 11;
Cannot rename the temporary file
ERR_CREATE_TEMP = 12;
Cannot create the temporary file
ERR_DIR_DOESNOTEXIST = 13;
Target directory does not exist
ERR_OPEN_TEMP = 14;
Cannot open the temporary zip file
ERR_FIRST_VOLUME = 15;
This is the first volume of spanned zip set, the last one is needed
ERR_CANNOT_FIND_VOLUME= 16;
Cannot find a volume of the spanned zip file
(c) BigSpeedSoft, 1998-2001