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.