Программирование: Extract7ZipArchive

Прототип

procedure Extract7ZipArchive(const ArchiveFileName, DestDir: String; const FullPaths: Boolean; const OnExtractionProgress: TOnExtractionProgress);

Описание

Выполняет распаковку указанного архива 7-Zip в заданный каталог с использованием или без использования имён путей.

Зашифрованные архивы не поддерживаются.

В случае возникновения ошибки будет вызвано исключение.

Используйте значение OnExtractionProgress для получения информации о ходе выполнения распаковки, в противном случае укажите nil.

Комментарии

Класс TOnExtractionProgress представлен следующей функцией:

TOnExtractionProgress = function(const ArchiveName, FileName: String; const Progress, ProgressMax: Int64): Boolean;

Возвращает значение True, что позволяет продолжить распаковку, иначе - False.

Extract7ZipArchive использует встроенную версию "7z ANSI-C Decoder" из библиотеки LZMA SDK (автор Igor Pavlov) как есть, за исключением улучшенной поддержки кодировки Unicode, сообщений об ошибках и вывода к требованиям к памяти.

Все выходные данные декодера записываются в журнал, если он включен, включая сообщения об ошибках, за исключением пустых строк.

Декодер имеет следующие ограничения, описанные автором в библиотеке LZMA SDK:

В дополнение к комментарию об использовании оперативной памяти: при извлечении файла всегда будет выделен достаточный объём памяти, чтобы вместить весь файл, независимо от размера блока. Например, для извлечения файла размером 1 ГБ с помощью Extract7ZipArchive требуется не менее 1 ГБ оперативной памяти. По этой причине для извлечения больших файлов рассмотрите возможность использовать другое решение, к примеру, встраивания в программу установки файлов архиватора 7-Zip, который не имеет такого ограничения.

Кроме того, как отмечено в документации:

См. также:

CreateExtractionPage
CreateDownloadPage
DownloadTemporaryFile
ExtractTemporaryFile