AVZ 5. Руководство пользователя
×

16.49.1. function ZIP_CreateArchive

function ZIP_CreateArchive(AArchiveFile : string; AFileList, AResCodes : TStrings; APWD : string = '') : boolean;
 
Создает на диске ZIP архив c именем AArchiveFile и помещает в него файлы из списка AFileList.
 
Результат обработки каждого из файлов заносится в список AResCodes (если файл успешно помещен в архив, в список записывается "0", если файл не найден - "1", если в ходе добавления файла в архив возникли некие ошибки (например, файл заблокирован на чтение или не хватает прав для его открытия) - "2". Если в скрипте не требуется анализировать успешность добавления файлов в архив, следует в качестве значения параметра AResCodes передать nil. Важно, что список AResCodes будет заполнен только при условии, что функция успешно отработала и вернула true.
 
Параметр APWD не обязателен и позволяет задать пароль архива. По умолчанию пароль не задан.
 
Каждая строка списка файлов AFileList должна содержать полное имя добавляемого файла, и отделенное от него точной с запятой имя этого файла в архиве. Например 'd:\avz_sysinfo.htm;LOG\avz_sysinfo.htm' - в данном случае файл d:\avz_sysinfo.htm будет добавлен в архив в каталог LOG под именем avz_sysinfo.htm.
Если в строке списка не указано имя файла в архиве (т.е. нет разделителя ;), то файл добавляется в корень архива, причем имя файла в архиве будет совпадать с именем добавляемого файла.
 
Если на диске существует файл с именем, заданным в AArchiveFile, то такой файл удаляется перед началом процесса архивации.
 
Начиная с версии 5.00 перед созданием архива делается проверка, существует ли на диске каталог, заданный в AArchiveFile. Если каталог не существует, то автоматически выполняется попытка его создания.
 
Функция возвращает true в случае успешного выполнения и false при обнаружении критических ошибок.
 
В параметре AArchiveFile и именах файлов списка AFileList допустимо указывать макросы, подробнее см. в разделе "макросы, допустимые в именах файлов"
 
 
Совместимость: AVZ 4.45 и выше
 
var
  FileList : TStringList;
begin
  FileList := TStringList.Create;
  FileList.Add('d:\avz_sysinfo.htm');
  FileList.Add('d:\avz_sysinfo.xml');
  ZIP_CreateArchive('d:\test.zip', FileList, nil, 'infected');
  FileList.Free;
end.
 
В данном примере на диске d:\ создается архив test.zip, в корень архива добавляется два файла, имена файлов в архиве будут совпадать с их именами на диске.
 
var
  FileList : TStringList;
begin
  FileList := TStringList.Create;
  FileList.Add('d:\avz_sysinfo.htm;LOG\sysinfo.htm');
  FileList.Add('d:\avz_sysinfo.xml;LOG\sysinfo.xml');
  ZIP_CreateArchive('d:\test.zip', FileList, nil, 'infected');
  FileList.Free;
end.
 
Данный пример отличается от предыдущего тем, что в архив файлы помещаются в каталог LOG под именами, отличными от имени на диске.
 
var
  FileList, ResCodes : TStringList;
  i : integer;
begin
  FileList := TStringList.Create;
  ResCodes := TStringList.Create;
  FileList.Add('d:\avz_sysinfo.htm;LOG\sysinfo.htm');
  FileList.Add('d:\avz_sysinfo.xml;LOG\sysinfo.xml');
  if ZIP_CreateArchive('d:\test.zip', FileList, ResCodes, 'infected') then
    for i := 0 to FileList.Count-1 do
      AddToLog('Файл '+FileList[i]+', результат архивации = '+ResCodes[i]);
  FileList.Free;
  ResCodes.Free;
end.
 
 В примерах использовались: AddToLog, класс TStringList