Компонента использует последнюю версию бесплатной библиотеки "unrar.dll" с официального сайта автора архиватора RAR. Библиотека уже встроена во внешнюю компоненту, ничего отдельно скачивать и устанавливать не нужно, в том числе и сам архиватор. Поддерживаются архивы формата RAR4 и RAR5 (многотомные архивы, самораспаковывающиеся архивы, архивы закрытые паролем). Операции, которые можно выполнить над архивом с помощью данной компоненты:
- Получение списка файлов в архиве с информацией о каждом файле;
- Тестирование архива;
- Извлечение из архива как всех, так и отдельных файлов с сохранением и без сохранения путей файлов в указанный каталог;
- Получение комментария архива;
- Получение атрибутов архива;
- Получение номера версии используемой библиотеки "unrar.dll";
Внешняя компонента написана на Delphi по технологии Native API, имеет 6 методов и 2 свойства. Далее английское и русское имя метода/свойства буду разделять символом "|".
Методы:
1. DLLVersion|ВерсияDLL() - Возвращает версию файла "unrar.dll";
Параметры: Нет;
Возвращаемое значение: Тип Число. Версия файла "unrar.dll".
2. CommentArchive|КомментарийАрхива(<Строка>) - Возвращает комментарий архива;
Параметры:
<Строка> - Тип Строка. Полное имя файла архива;
Возвращаемое значение: Тип Строка. Комментарий архива.
3. ListFilesArchive|СписокФайловАрхива(<ИмяФайлаАрхива>, <Комментарий>) - Возвращает список файлов архива;
Параметры:
<ИмяФайлаАрхива> - Тип Строка. Полное имя файла архива;
<Комментарий> - Тип Строка. Выходной параметр, необязательный. В качестве значений необходимо передать переменную, в которую будет помещен комментарий архива;
<Атрибуты> - Тип Строка. Выходной параметр, необязательный. В качестве значений необходимо передать переменную, в которую будет помещена строка атрибутов вида "0;1;0;1;0;1;0;1;0". По сути можно считать сто строка в формате CSV - 9 колонок, 1 строка. Пример парсинга смотреть в обработке;
Возвращаемое значение: Тип Строка. Список файлов архива в формате CSV. Пример парсинга смотреть в обработке.
4. TestArchive|ТестАрхива(<ИмяФайлаАрхива>, <ОписаниеОшибки>) - Выполняет тест архива;
Параметры:
<ИмяФайлаАрхива> - Тип Строка. Полное имя файла архива;
<ОписаниеОшибки> - Тип Строка. Выходной параметр. В качестве значений необходимо передать переменную, в которую будет помещена строка с описание ошибки в случае возникновения ошибки в процессе тестирования;
Возвращаемое значение: Тип Булево. Значение Истина - в случае успешного тестирования. Значение Ложь - в случае возникновения ошибки в процессе тестирования, в параметр <ОписаниеОшибки> будет помещена строка с описание ошибки.
5. ExtractArchive|РаспаковатьАрхив(<ИмяФайлаАрхива>, <ИмяКаталога>, <СохранятьПути>) - Распаковывает все файлы архива в указанный каталог;
Параметры:
<ИмяФайлаАрхива> - Тип Строка. Полное имя файла архива;
<ИмяКаталога> - Тип Строка. Полное имя каталога для распаковки файлов архива;
<СохранятьПути> - Тип Булево. Если Истина, то при распаковке будут сохранены все пути файлов;
Возвращаемое значение: Отсутствует.
6. ExtractFilesArchive|РаспаковатьФайлыАрхива(<ИмяФайлаАрхива>, <ИменаФайлов>, <ИмяКаталога>, <СохранятьПути>) - Распаковывает указанные файлы архива в указанный каталог;
Параметры:
<ИмяФайлаАрхива> - Тип Строка. Полное имя файла архива;
<ИменаФайлов> - Тип Строка. Имена файлов в архиве, которые необходимо извлечь;
<ИмяКаталога> - Тип Строка. Полное имя каталога для распаковки файлов архива;
<СохранятьПути> - Тип Булево. Если Истина, то при распаковке будут сохранены все пути файлов;
Возвращаемое значение: Отсутствует.
Свойства:
1. Version|Версия - Тип Строка. Содержит версию компоненты в виде строки. Данное свойство доступно только для чтения.
2. Password|Пароль - Тип Строка. Содержит пароль для распаковки архива. Если на архив не установлен пароль, то значение свойства игнорируется. Данное свойство доступно только для записи.
Примеры использования всех методов и свойств приведены в прилагаемых обработках.
1. Добавлена поддержка 64-битной платформы;
2. Обновлена библиотека UnRAR до версии 8;
3. Расширен метод ListFilesArchive|СписокФайловАрхива - добавлен 3-й параметр в который помещаются атрибуты архива. Кроме того выходные параметры (2-ой и 3-ий) стали не обязательными, т.е. можно не получать комментарий и атрибуты, если это не требуется (писание метода в публикации обновлено);
4. Доработаны демонстрационные обработки - добавлена демонстрация работы с атрибутами архива, устранены мелкие недочеты и ошибки;
5. Внешняя компонента собрана на последней версии компилятора, почищен и оптимизирован код;
Обработки и внешняя компонента тестировались на платформах 8.3.10.2650 (x86), 8.3.17.1549 (x86) и 8.3.20.1613 (x64).
Так же, кому интересно: Внешняя Native компонента для сжатия/распаковки файлов по алгоритму Deflate, в том числе сжатия/распаковки архивов в формате GZip.