  Динамически загружаемая библиотека (Dynamic Link Library) UniPack.dll (отладочная версия 1.0.0.0)
  Авторские права (С) 2002 Буравцова Юрия. Все права защищены законом РФ "Об авторском и смежных с ним правах"
  Только некоммерческое использование.

0.  Использованные при создании библиотеки программные средства: Microsoft Windows 98 SE, Borland Delphi 3 Client/Server, библиотека компонентов упаковки ZipTV версии 3.13 компании Microchip Data Systems.

1.  Библиотека предназначена для использования в FTN-системе FIPS, разрабатываемой FIPS Russian Team. Назначение библиотеки - распаковка аркмейла, ноделистов и прочих архивов, созданных большинством известных архиваторов, а также упаковка аркмейла в архивы формата ZIP.

2.  Типы распаковываемых архивов: ZIP, GZIP, BlackHole, ACE, ARJ, ARC, RAR, CAB, LHA, JAR, ZOO, TAR

3.  Типы упаковываемых архивов: ZIP

4.  Для распаковки архивов RAR необходима внешняя библиотека UnRAR.dll;
                           CAB -                             Cabinet.dll;
                           ACE -                             UnACE.dll.
  (Думаю, два последних типа архивов можно смело выкинуть - надобность в соответствующих библиотеках отпадет).

5.  Форматы функций библиотеки UniPack.dll на языке Pascal:

function UnPack(FileName,       // Полное имя файла
                OutDir,         // Выходной каталог (длинный или короткий)
                Pw,             // Пароль; Используется, если необходим; Nil - без пароля
                FileListName,   // Имя списка содержащихся файлов; Nil - если список не задан;
                                //  если задан - распаковка не производится
                FileMask,       // Маска файлов; * - все файлы
                OnFileExist: PChar // Действия при наличии распаковываемых файлов:
                                   // O - переписать
                                   // N - у существующих изменять имя файла
                                   // E - у существующих изменять расширение файла
               ):Integer; stdcall external 'UniPack.dll';


function   Pack(OutFileName,    // Полное имя файла
                Pw,             // Пароль; Используется, если необходим; Nil - без пароля
                ArchiveType,    // Тип используемого архиватора: atZip - PkZip;
                FileListName,   // Имя списка содержащихся файлов; Nil - если список не задан;
                                //  если задан - распаковка не производится
                FileMask: PChar // Полное имя архивируемых файлов (возможна маска)
                                //  либо их список; * - все файлы; имена файлов в списке
                                //  разделяются символом #1; в двойные кавычки не заключаются
               ): Integer; stdcall external 'UniPack.dll';

  Метод вызова - STDCALL.

  Пример распаковки парольного архива "PackDll(290, Pw - tra-ta-ta).rar"; пароль - "tra-ta-ta"; выходной путь - 'F:\300Pw'; файл списка файлов отсутствует; маска распаковываемых файлов - *.pkt; если файл существует - изменить имя существующего:

 Result := WriteLn(UnPack ('PackDll(290, Pw - tra-ta-ta).rar',
                           'F:\300Pw',
                           'tra-ta-ta',
                           nil,
                           '*.pkt',
                           'n'));

  Пример упаковки архива "E:\_Asd\Archive.zip"; пароль - отсутствует, тип упаковщика - atZip, файл списка файлов отсутствует; упаковываемые файлы - D:\Qwa\*.bat, C:\Config.sys, C:\System.1st:

 Result := WriteLn(Pack ('E:\_Asd\Archive.zip',
                         nil,
                         'atZip',
                         nil,
                         'D:\Qwa\*.bat'#1'C:\Config.sys'#1'C:\System.1st'));



  Упаковка ZIP фиксирована методом Deflate; файлы упаковываются без сохранения директорий. Параметр ArchiveType в предлагаемой версии библиотеки принципиального значения не имеет - можно заменить на Nil.

6.  Возвращаемые коды ошибок:

   0 - ОК;
  11 - Not enough memory;
  12 - Data is bad;
  13 - CRC error in archive data;
  14 - Archive format unknown;
  15 - Cannot open existing file;
  16 - Cannot create file;
  17 - Error closing file;
  18 - Error reading from file;
  19 - Error writing to file;
  20 - Buffer too small;
  21 - Function aborted by user;
  22 - No files found;
  23 - Password required;
  24 - Function not supported;


7.  Замеченный баг, теоретически исправимый (но, думаю, на этапе отладки в новом билде это малопринципиально ;)
  При распаковке парольных RAR-архивов, упакованных WinRAR 3.0 с максимальной компрессией и словарем 4096 байт, с использованием UnRAR.dll версии 3.0, распаковывается только первый файл в архиве с заявленной маской.

8.  Размер исходной библиотеки - 438 784 байта. Исключение отдельных типов поддерживаемых архивов из кода мало сказывается на сокращении его размера - около 20-30 килобайт.

9.  Разрешено к применению только в системе FIPS и только на условиях Freeware!!!
