85 lines
2.5 KiB
ObjectPascal

////////////////////////////////////////////////////////////////////////////////
//
// ****************************************************************************
// * Project : FWZip
// * Unit Name : CreateZIPDemo2
// * Purpose : Äåìîíñòðàöèÿ èçìåíåíèÿ äîáàâëåííûõ çàïèñåé
// * Author : Àëåêñàíäð (Rouse_) Áàãåëü
// * Copyright : © Fangorn Wizards Lab 1998 - 2023.
// * Version : 2.0.0
// * 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
// https://zlib.net/zlib-1.2.13.tar.gz
// http://www.base2ti.com/
//
// Äàííûé ïðèìåð ïîêàçûâàåò ðàçëè÷íûå âàðèàíòû èçìåíåíèÿ çàïèñåé
// â åùå íå ñôîðìèðîâàííîì àðõèâå.
program CreateZIPDemo2;
{$IFDEF FPC}
{$MODE Delphi}
{$ELSE}
{$APPTYPE CONSOLE}
{$ENDIF}
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 := string('Òåñòîâûé êîìåíòàðèé ê ôàéëó ') + Item.FileName;
// Óñòàíîâèì ïàðîëü
Item.Password := 'password';
// Èçìåíèì òèï ñæàòèÿ
Item.CompressionLevel := TCompressionLevel(Byte(I mod 3));
end;
// Òåïåðü êàæäûé ýëåìåíò àðõèâà èìååò êîìåíòàðèé, çàøèôðîâàí ïàðîëåì è
// èìååò ñîáñòâåííóþ ñòåïåíü ñæàòèÿ â çàâèñèìîñòè îò ñâîåé
// ïîðÿäêîâîé ïîçèöèè â àðõèâå.
// Íó è ñàì àðõèâ òàê-æå èìååò êîìåíòàðèé.
Zip.Comment := 'Òåñòîâûé êîìåíòàðèé êî âñåìó àðõèâó';
// ñîçäàåì àðõèâ è âûâîäèì ðåçóëüòàò
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.