function ZIP_CreateArchive

function ZIP_CreateArchive

Previous pageReturn to chapter overviewNext page

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, то такой файл удаляется перед началом процесса архивации.

 

Функция возвращает true в случае успешного выполнения и false при обнаружении критических ошибок.

 

В параметре AArchiveFile и именах файлов списка AFileList допустимо указывать макросы, подробнее см. в разделе "макросы, допустимые в именах файлов"

 

 

Совместимость: AVZ 4.45 и выше

 
var
FileList : TStrings;
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 : TStrings;
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 : TStrings;

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.