85 lines
2.5 KiB
ObjectPascal
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.
|