Распаковщик RAR-архивов — UnRAR 1C



Внешняя Native компонента для распаковки RAR-архивов.

Компонента использует последнюю версию бесплатной библиотеки «unrar.dll» с официального сайта автора архиватора RAR. Библиотека уже встроена во внешнюю компоненту, ничего отдельно скачивать и устанавливать не нужно, в том числе и сам архиватор. Поддерживаются архивы формата RAR и RAR5 (многотомные архивы, самораспаковывающиеся архивы, архивы закрытые паролем). Операции, которые можно выполнить над архивом с помощью данной компоненты:

  1. Получение списка файлов в архиве с информацией о каждом файле;
  2. Тестирование архива;
  3. Извлечение из архива как всех, так и отдельных файлов с сохранением и без сохранения путей файлов в указанный каталог;
  4. Получение комментария архива;
  5. Настройка автопароля для распаковки архивов;
  6. Получение номера версии используемой библиотеки «unrar.dll»;

Внешняя компонента написана на Delphi по технологии Native API, имеет 6 методов и 2 свойства. Далее английское и русское имя метода/свойства буду разделять символом «|».

Методы:

1. DLLVersion|ВерсияDLL() — Возвращает версию файла «unrar.dll»;
Параметры: Нет;
Возвращаемое значение: Тип Число. Версия файла «unrar.dll».

2. CommentArchive|КомментарийАрхива(<Строка>) — Возвращает комментарий архива;
Параметры:
<Строка> — Тип Строка. Полное имя файла архива;
Возвращаемое значение: Тип Строка. Комментарий архива.

3. ListFilesArchive|СписокФайловАрхива(<ИмяФайлаАрхива>, <Комментарий>) — Возвращает список файлов архива;
Параметры:
<ИмяФайлаАрхива> — Тип Строка. Полное имя файла архива;
<Комментарий> — Тип Строка. Выходной параметр. В качестве значений необходимо передать переменную, в которую будет помещен комментарий архива;
Возвращаемое значение: Тип Строка. Список файлов архива в формате CSV (пример смотреть в обработке).

4. TestArchive|ТестАрхива(<ИмяФайлаАрхива>, <ОписаниеОшибки>) — Выполняет тест архива;
Параметры:
<ИмяФайлаАрхива> — Тип Строка. Полное имя файла архива;
<ОписаниеОшибки> — Тип Строка. Выходной параметр. В качестве значений необходимо передать переменную, в которую будет помещена строка с описание ошибки в случае возникновения ошибки в процессе тестирования;
Возвращаемое значение: Тип Булево. Значение Истина — в случае успешного тестирования. Значение Ложь — в случае возникновения ошибки в процессе тестирования, в параметр <ОписаниеОшибки> будет помещена строка с описание ошибки.

5. ExtractArchive|РаспаковатьАрхив(<ИмяФайлаАрхива>, <ИмяКаталога>, <СохранятьПути>) — Распаковывает все файлы архива в указанный каталог;
Параметры:
<ИмяФайлаАрхива> — Тип Строка. Полное имя файла архива;
<ИмяКаталога> — Тип Строка. Полное имя каталога для распаковки файлов архива;
<СохранятьПути> — Тип Булево. Если Истина, то при распаковке будут сохранены все пути файлов;
Возвращаемое значение: Отсутствует.

6. ExtractFilesArchive|РаспаковатьФайлыАрхива(<ИмяФайлаАрхива>, <ИменаФайлов>, <ИмяКаталога>, <СохранятьПути>) — Распаковывает указанные файлы архива в указанный каталог;
Параметры:
<ИмяФайлаАрхива> — Тип Строка. Полное имя файла архива;
<ИменаФайлов> — Тип Строка. Имена файлов в архиве, которые необходимо извлеч;
<ИмяКаталога> — Тип Строка. Полное имя каталога для распаковки файлов архива;
<СохранятьПути> — Тип Булево. Если Истина, то при распаковке будут сохранены все пути файлов;
Возвращаемое значение: Отсутствует.

Свойства:

1. Version|Версия — Тип Строка. Содержит версию компоненты в виде строки. Данное свойство доступно только для чтения.

2. Password|Пароль — Тип Строка. Содержит пароль для распаковки архива. Если на архив не установлен пароль, то значение свойства игнорируется. Данное свойство доступно только для записи.

Примеры использования всех методов и свойств приведены в прилагаемых обработках.
Кому интересно: Внешняя Native компонента для сжатия/распаковки файлов по алгоритму Deflate, в том числе сжатия/распаковки архивов в формате GZip.

3 Comments

  1. Irwin

    Неплохо было бы писать в скачиваемом файле версию «unrar.dll». А еще лучше не встраивать ее в компоненту, потому что при выходе новой версии придется каждый раз качать обработку (а выходят они достаточно часто). Проблема в том, что старые версии могут не работать с архивами, запакованными новой версией.

    Сам не раз встречал такую проблему, поэтому rar-ом стараюсь не пользоваться, только zip.

    Reply
  2. frkbvfnjh

    (1) Irwin, я то Вас понимаю и сам стараюсь не пользоваться rar-ом, но компонента служит как раз для распаковки, а не для запаковки и рассчитана на тех, кому по воли судьбы необходимо приходиться обрабатывать архивы rar, ну к примеру нужно в документообороте обрабатывать архивы которые присылают заказчики, да и та же фирма 1С все дистрибутивы платформы и др. файлы пакует rar-ом (наверное у них какое-то тайное соглашение), может кому нужно будет обработку написать по автоматическому скачиваний файлов с сайта 1С и их распаковки. Что касается версии библиотеки, то она самая последняя на момент создания публикации: версия файла — 5.31.100.1864, внутренняя версия — 7.

    Reply
  3. user745651

    При использовании UnRAR1C (обычное приложение)

    Внешняя компонента : Not enough memory

    С чем может быть связана такая ошибка? как ее победить?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *