Zip.Add

Zip.Add ( string ZipFile,
table Files,
string Password = "",
number CompFactor = 5,
function CallbackFunction = nil,
boolean Recurse = false )
Примеры

Описание

Добавляет файлы в Zip архив.

Параметры

ZipFile

(строка) Полный путь и имя файла к файлу Zip архива.

Files

(таблица) Таблица, содержащая полные пути ко всем файлам, которые нужно добавить. Также в этой таблице, для добавления всех файлов из одной директории, можно использовать подстановочные знаки * и ?, например, {"C:\\MyFolder\\*.*"}. При использовании подстановочного знака, каждый файл будет добавляться относительно базовой папки. Например, если таблица файлов ссылается на {"C:\\MyFolder\\*.*"} и папка "MyFolder" содержит один файл, названный "One.txt" и папку по имени "MyInsideFolder", содержащую файл "Two.txt", базовой папкой будет "MyFolder". Если нужен рекурсивный обход вложенных папок, параметр Recurse должен быть установлен как истина (true).

IncludeFolderNames

(логический) Сохранять ли относительную структуру папки в архиве при добавлении файлов с подстановочными знаками.

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueВключаются относительные имена папок, так что структура может быть восстановлена. (По умолчанию)
falseНе включаются любые имена внутриархивных папок. (Zip архив не будет иметь внутри себя папок.)

Например, имеются два файла, размещенные на:
    C:\MyFolder\One.txt
    C:\MyFolder\MyInsideFolder\Two.txt

Если таблица файлов ссылается на {"C:\\MyFolder\\*.*"}, а IncludeFolderNames и Recurse установлены как истина (true), структура Zip архива будет такой:
    One.txt
    MyInsideFolder\Two.txt

Если же IncludeFolderNames установлена как ложь (false), структура Zip архива будет такой:
    One.txt
    Two.txt

Примечание: Если подстановочные знаки не используются, имена внутренних папок не будут сохраняться.

Password

(строка) Пароль, используемый для защиты Zip файла. Этот пароль будет нужен для извлечения файлов. (Этот параметр не обязательный. Если не нужна защита Zip файла, просто оставьте этот параметр пустым.)

CompFactor

(число) Коэффициент сжатия, используемый для Zip файла (0-9). При коэффициенте 0 скорость преобразования быстрейшая, сжатие минимальное, при 9 самое медленное преобразование и наибольшее сжатие. По умолчанию значение равно 5.

CallbackFunction

(функция) Имя функции, которая будет вызываться всякий раз, когда происходит процесс добавления файла в Zip архив. (Эту возвращающуюся функцию можно использовать для отображения прогресса архивации каждого файла, своим собственным способом.)

Примечание: Если CallbackFunction установлена как nil, тогда информация о протекании процесса будет отправлена во встроенное диалоговое окно состояния, предполагая что оно в настоящий момент видимое. (Можно показать или скрыть диалоговое окно состояния действиями StatusDlg.Show или StatusDlg.Hide соответственно.)

Возвращающаяся функция должна иметь возможность принять следующие параметры:

String

(строка) Полный путь и имя файла в настоящий момент добавляемого к Zip архиву.

Percent

(число) Процент выполнения, соответствующий текущему файлу или общему действию.

Status

(число) Состояние текущего сообщения обратного вызова. Может быть или ZIP_STATUS_MAJOR (значение равно 0) или ZIP_STATUS_MINOR (значение равно 1). ZIP_STATUS_MAJOR обозначает, что возврат соответствует прохождению процесса действия в целом. ZIP_STATUS_MINOR обозначает, что возврат соответствует прохождению процесса действия текущего файла.
Возвращающая функция должна возвращать логическое значение (истина (true) или ложь (false)), показывающее следует ли продолжать архивирование Zip файла:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueПродолжить архивирование Zip файла.
falseОстановка архивирования Zip файла при первой возможности.

Recurse

(логический) Делать ли рекурсивный обход вложенных папок, при использовании подстановочных знаков:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueРекурсия подпапок при использовании подстановочных знаков.
falseНе делать рекурсию подпапок, даже если используются подстановочные знаки. (По умолчанию)

Возврат

Ничего. Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
Смотрите также: Связанные действия

Примеры

Пример 1

FileTable = {_SourceFolder .. "\\AutoPlay\\Docs\\Prices.txt", _SourceFolder .. "\\AutoPlay\\Docs\\Catalog.txt"};
Zip.Add("C:\\CompanyInformation\\Info.zip", FileTable, false, "", 5, nil, false);


В первой строке к таблице, названной "FileTable", добавляются пути к файлам "Prices.txt" и "Catalog.txt". Вторая строка содержит действие Zip.Add, которое добавляет файлы из таблицы "FileTable" к Zip файлу по имени "Info.zip".

Пример 2

Zip.Add("C:\\CompanyInformation\\Info.zip", {_SourceFolder .. "\\AutoPlay\\Docs\\*.*"}, true, "", 5, nil, true);
Добавляем все файлы из папки "Docs" и из всех, вложенных в неё папок, к Zip архиву. названному "Info.zip". Поскольку параметр IncludeFolderNames установлен в истину (true), внутренняя структура директории Zip архива будет соответствовать структуре папки "Docs". Параметр Recurse также выставлен как истина (true), так что если папка Docs содержит какие-либо вложенные папки, их содержимое также будет добавлено в соответствии с их структурой директории, поддерживаемой относительно папки "Docs". Итак, если папка Docs, рассматриваемая в примере указанном выше, содержит:
    ...\AutoPlay\Docs\One.txt
    ...\AutoPlay\Docs\MyFolder\Two.txt

Zip архив будет иметь следующую структуру:
    One.txt
    MyFolder\Two.txt

Пример 3

-- Prompt the user to select files to add to the zip archive.
-- Предлагаем пользователю выбрать файлы для добавления к zip архиву.
archive_files = Dialog.FileBrowse(false, "Files to Add", _DesktopFolder, "All Files (*.*)|*.*|", "", "dat", true, false);

-- Check to see if an error occurred, or the user cancelled.
-- Смотрим, не произошло ли ошибки или не отменил ли действие пользователь.
if (archive_files[1] ~= "CANCEL") and (archive_files ~= nil) then

    -- Show the status dialog.
    -- Показываем диалоговое окно состояния.
    StatusDlg.Show();

    -- Add the chosen files to the zip archive.
    -- Добавляем выбранные файлы к zip архиву.
    Zip.Add(_DesktopFolder .. "\\NewArchive.zip", archive_files, true, "", 5, nil, false);

    -- Get the error code of the zip.add action.
    -- Получаем код ошибки от действия zip.add.
    error = Application.GetLastError();

    -- Hide the status dialog.
    -- Скрываем диалоговое окно состояния.
    StatusDlg.Hide();

    -- If it succeeded, display a success message and open the folder. Otherwise display the error message.
    -- Если все закончилось благополучно, показываем сообщение об успехе и открываем папку. В противном случае показываем сообщение об ошибке.
    if (error == 0) then
        Dialog.Message("Success", "The files were successfully archived.", MB_OK, MB_ICONINFORMATION);

        -- Open the folder where the zip file was created.
        -- Открываем папку, где был создан zip файл.
        File.ExploreFolder(_DesktopFolder, SW_SHOWNORMAL);
    else
        Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
    end
end
Показываем пользователю диалоговое окно просмотра файлов, позволяя выбрать файлы которые он хочет добавить к Zip архиву. Затем выбранные файлы добавляются к Zip архиву, созданному на Рабочем столе пользователя. Если процесс завершился благополучно, показываем сообщение об успехе. Если случилась ошибка, показываем сообщение с кодом ошибки.
Смотрите также: Связанные действия