82 lines
2.5 KiB
ObjectPascal
82 lines
2.5 KiB
ObjectPascal
////////////////////////////////////////////////////////////////////////////////
|
||
//
|
||
// ****************************************************************************
|
||
// * Project : FWZip
|
||
// * Unit Name : CreateZIPDemo2
|
||
// * Purpose : Демонстрация изменения добавленных записей
|
||
// * Author : Александр (Rouse_) Багель
|
||
// * Copyright : © Fangorn Wizards Lab 1998 - 2013.
|
||
// * Version : 1.0.10
|
||
// * Home Page : http://rouse.drkb.ru
|
||
// * Home Blog : http://alexander-bagel.blogspot.ru
|
||
// ****************************************************************************
|
||
// * Stable Release : http://rouse.drkb.ru/components.php#fwzip
|
||
// * Latest Source : https://github.com/AlexanderBagel/FWZip
|
||
// ****************************************************************************
|
||
//
|
||
// Используемые источники:
|
||
// ftp://ftp.info-zip.org/pub/infozip/doc/appnote-iz-latest.zip
|
||
// http://zlib.net/zlib-1.2.5.tar.gz
|
||
// http://www.base2ti.com/
|
||
//
|
||
|
||
// Данный пример показывает различные варианты изменения записей
|
||
// в еще не сформированном архиве.
|
||
|
||
program CreateZIPDemo2;
|
||
|
||
{$APPTYPE CONSOLE}
|
||
|
||
uses
|
||
SysUtils,
|
||
TypInfo,
|
||
FWZipZLib,
|
||
FWZipWriter;
|
||
|
||
var
|
||
Zip: TFWZipWriter;
|
||
Item: TFWZipWriterItem;
|
||
I: Integer;
|
||
BuildZipResult: TBuildZipResult;
|
||
begin
|
||
SetCurrentDir(ExtractFilePath(ParamStr(0)));
|
||
try
|
||
Zip := TFWZipWriter.Create;
|
||
try
|
||
// Для начала добавим в корень архива файлы из корневой директории
|
||
Zip.AddFolder('..\..\', False);
|
||
|
||
// Теперь изменим им свойства:
|
||
for I := 0 to Zip.Count - 1 do
|
||
begin
|
||
Item := Zip[I];
|
||
// Изменим коментарий
|
||
Item.Comment := 'Тестовый коментарий к файлу ' + Item.FileName;
|
||
// Установим пароль
|
||
Item.Password := 'password';
|
||
// Изменим тип сжатия
|
||
Item.CompressionLevel := TCompressionLevel(Byte(I mod 3));
|
||
end;
|
||
|
||
// Теперь каждый элемент архива имеет коментарий, зашифрован паролем и
|
||
// имеет собственную степень сжатия в зависимости от своей
|
||
// порядковой позиции в архиве.
|
||
// Ну и сам архив так-же имеет коментарий.
|
||
Zip.Comment := 'Тестовый коментарий ко всему архиву';
|
||
|
||
// создаем архив и выводим результат
|
||
ForceDirectories('..\DemoResults\');
|
||
BuildZipResult := Zip.BuildZip('..\DemoResults\CreateZIPDemo2.zip');
|
||
// ... и вывести результат
|
||
Writeln(GetEnumName(TypeInfo(TBuildZipResult), Integer(BuildZipResult)));
|
||
|
||
finally
|
||
Zip.Free;
|
||
end;
|
||
except
|
||
on E: Exception do
|
||
Writeln(E.ClassName, ': ', E.Message);
|
||
end;
|
||
Readln;
|
||
end.
|