Zip.Extract
Описание
Извлекает файлы из Zip архива.
ПараметрыZipFile
(строка) Полный путь и имя файла архивного Zip файла.
Files
(таблица) Таблица, содержащая список файлов для извлечения. Для извлечения всех файлов из Zip архива используем {"*.*"}.
Примечание: Также в таблице можно использовать подстановочные знаки * and ?, для извлечения множества файлов.
Destination
(строка) Путь к папке, куда будут извлекаться файлы.
Recurse
(логический) Делать ли рекурсию в подпапках при поиске файлов для извлечения:
Примечание: Это прежде всего полезно при использовании подстановочных знаков в извлекаемых файлах.
UseInternalFolders
(логический) Восстанавливать ли внутреннюю структуру файлов при извлечении из Zip файла:
Password
(строка) Пароль, требующийся для извлечения файлов из Zip файла. (Этот параметр дополнительный и нужен только если Zip файл защищен паролем. Если пароль не требуется, этот параметр просто остается пустым.)
Overwrite
(число) Следует ли переписывать уже существующие в папке назначения файлы, при извлечении. Выбор из:
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 файла:
Возврат
Ничего. Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
Смотрите также: Связанные действия
ПримерыПример 1Zip.Extract("AutoPlay\\Docs\\graphics.zip", {"*.*"}, "C:\\Graphics", true, true, "", 3, nil);Извлекает все файлы из Zip файла по имени "graphics.zip" в папку "C:\Graphics" системы пользователя. Если любой из файлов уже имеется в папке назначения, он будет переписан. Пример 2-- Allow the user to select a directory to unzip the files. -- Позволяем пользователю выбрать директорию для распаковки файлов. target_folder = Dialog.FolderBrowse("Select a Folder", "C:\\"); -- Check to see if the user cancelled or an error occurred. -- Смотрим, не отменил ли действие пользователь и не произошла ли ошибка. if (target_folder ~= "CANCEL") and (target_folder ~= "") then -- Gets a list of the contents of a zip file. -- Получаем список содержимого zip файла. zip_contents = Zip.GetContents("AutoPlay\\Docs\\Info.zip", true); -- Get the error code of the last action. -- Получаем код ошибки для последнего действия. error = Application.GetLastError(); -- If an error occurred, display the error code message. -- Если случилась ошибка, показываем сообщение с кодом ошибки. if (error ~= 0) then Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION); else -- Take the table and turn it into a string with newlines for displaying. -- Берем таблицу и превращаем её в строку, показывая каждый элемент с новой строки. zip_contents_display = Table.Concat(zip_contents, "\r\n", 1, TABLE_ALL); -- Ask the user if they are sure they would like to unzip the contents. -- Спрашиваем пользователя, уверен ли он, что хочет распаковать содержимое. result = Dialog.Message("Information", "The following files will be unzipped:\r\nClick the Cancel button to abort the process.\r\n\r\n" .. zip_contents_display, MB_OKCANCEL) -- If the user clicked Ok, unzip the files. -- Если пользователь кликает Ok, распаковываем файлы. if (result == IDOK) then -- Show the status dialog. -- Показываем диалоговое окно состояния. StatusDlg.Show(); -- Extract the contents of the Zip file. -- Извлекаем содержимое Zip файла. Zip.Extract("AutoPlay\\Docs\\Info.zip", {"*.*"}, target_folder, true, true, "", ZIP_OVERWRITE_NEVER, nil); -- Check the error code for the last action. -- Проверяем код ошибки последнего действия. error = Application.GetLastError(); -- Hide the status dialog. -- Скрываем диалоговое окно состояния. StatusDlg.Hide(); -- If an error occurred, display the error code message. -- Если случилась ошибка, показываем сообщение с кодом ошибки. if (error ~= 0) then Dialog.Message("Errror", tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION); else Dialog.Message("Success", "The unzipping was successful.", MB_OK, MB_ICONINFORMATION); end end end endВ этом примере вначале пользователю предлагается выбрать папку при помощи действия Dialog.FolderBrowse. Эта папка будет использоваться для распаковки в нее файлов. Затем пользователю представляется диалоговое окно, содержащее имена файлов, которые будут распакованы и разрашается прервать процесс. Если пользователь кликает по кнопке Ok, файлы распаковываются в выбранную папку. По окончании процесса будет дано уведомление об успешном или нет прохождении процедуры.
Смотрите также: Связанные действия
|