-
Notifications
You must be signed in to change notification settings - Fork 18
/
fwzip.inc
93 lines (80 loc) · 4.46 KB
/
fwzip.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
////////////////////////////////////////////////////////////////////////////////
//
// ****************************************************************************
// * Project : FWZip
// * Unit Name : fwzip.inc
// * Purpose : Набор классов для распаковки ZIP архива
// * 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
// http://zlib.net/zlib-1.2.5.tar.gz
// http://www.base2ti.com/
//
// Данный модуль предназначен для глобального включения
// директив настройки пакета FWZip
// Если необходимо использовать ZLibEx раскоментируйте директиву ниже
// {$DEFINE USE_ZLIB_EX}
// Если необходимо использовать внешнюю библиотеку раскоментируйте директиву ниже
// {$DEFINE USE_ZLIB_DLL}
// Если необходима поддержка сжатия/распаковки по старому варианту
// c генерацией ZLib заголовка раскоментируйте директиву ниже
// Но есть нюанс - распаковка с автогенерируемым заголовком в очень редких случаях
// не сможет открыть архивы созданные при помощи 7Zip
// {$DEFINE USE_AUTOGENERATED_ZLIB_HEADER}
// Настройки только под FPC!!!
// Если необходимо использовать штатный модуль ZLib идущий в составе Lazarus
// раскоментируйте директиву ниже
// {$DEFINE USE_DEFAULT_FPC_ZLIB}
// ВНИМАНИЕ!!!
// =============================================================================
// КОД СЛЕДУЮЩИЙ НИЖЕ НЕ ПРЕДНАЗНАЧЕН ДЛЯ ИЗМЕНЕНИЯ ПРОГРАММИСТОМ И
// СОДЕРЖИТ КРИТИЧЕСКИЕ НАСТРОЙКИ ДЛЯ БИБЛИОТЕКИ FWZip
// Lazarus предлагает использовать внешнюю библиотеку
// отключаем такое поведение и включаем использование скомпиленых обьектников
{$IFDEF FPC}
{$IFNDEF USE_DEFAULT_FPC_ZLIB}
{$DEFINE USE_ZLIB_FPC}
{$ENDIF}
{$UNDEF USE_ZLIB_EX}
{$UNDEF USE_ZLIB_DLL}
{$UNDEF OLDEST_ZLIB}
{$ELSE}
// deflateInit2_ и inflateInit2_ отсутствуют в Delphi вплоть до 2009-ой
// поэтому при использовании старых версий дельфи и стандартного модуля ZLib
// необходимо отключать использование данных функций
{$IF COMPILERVERSION < 20.0 }
{$DEFINE OLDEST_ZLIB}
{$ELSE}
{$UNDEF OLDEST_ZLIB}
{$IFEND}
{$ENDIF}
// Если подключена библиотека ZLibEx, то использовать deflateInit2_ и inflateInit2_ можно
// при этом, отключаем использование внешней библиотеки
{$IFDEF USE_ZLIB_EX}
{$UNDEF OLDEST_ZLIB}
{$UNDEF USE_ZLIB_DLL}
{$ENDIF}
// Разрешаем использовать два устаревших метода компресии буферов
{$DEFINE USE_OLDEST_METHODS}
// Если подключена внешняя библиотека, то использовать deflateInit2_ и inflateInit2_ можно
{$IFDEF USE_ZLIB_DLL}
{$UNDEF OLDEST_ZLIB}
{$UNDEF USE_OLDEST_METHODS}
{$ENDIF}
// Если использовать deflateInit2_ и inflateInit2_ нельзя,
// принудительно переключаемся на старый режим работы с автогенерируемыми заголовками
{$IFDEF OLDEST_ZLIB}
{$DEFINE USE_AUTOGENERATED_ZLIB_HEADER}
{$UNDEF USE_OLDEST_METHODS}
{$ELSE}
{$UNDEF USE_AUTOGENERATED_ZLIB_HEADER}
{$ENDIF}