Стартовый пул
This commit is contained in:
23
fwzip/delphi7/Demos/ZipAnalizer/ZipAnalizer.dpr
Normal file
23
fwzip/delphi7/Demos/ZipAnalizer/ZipAnalizer.dpr
Normal file
@@ -0,0 +1,23 @@
|
||||
program ZipAnalizer;
|
||||
|
||||
{$IFDEF FPC}
|
||||
{$MODE Delphi}
|
||||
{$ENDIF}
|
||||
|
||||
uses
|
||||
{$IFnDEF FPC}
|
||||
{$ELSE}
|
||||
Interfaces,
|
||||
{$ENDIF}
|
||||
Forms,
|
||||
uZipAnalizer in 'uZipAnalizer.pas' {dlgZipAnalizer};
|
||||
|
||||
{$IFNDEF FPC}
|
||||
{$R *.res}
|
||||
{$ENDIF}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TdlgZipAnalizer, dlgZipAnalizer);
|
||||
Application.Run;
|
||||
end.
|
24
fwzip/delphi7/Demos/ZipAnalizer/clear.bat
Normal file
24
fwzip/delphi7/Demos/ZipAnalizer/clear.bat
Normal file
@@ -0,0 +1,24 @@
|
||||
rd /S /Q "%cd%\backup\"
|
||||
rd /S /Q "%cd%\ConverterBackup\"
|
||||
rd /S /Q "%cd%\lib\"
|
||||
rd /S /Q "%cd%\__history\"
|
||||
rd /S /Q "%cd%\__recovery\"
|
||||
del "%cd%\*.o"
|
||||
del "%cd%\*.a"
|
||||
del "%cd%\*.or"
|
||||
del "%cd%\*.lps"
|
||||
del "%cd%\*.obj"
|
||||
del "%cd%\*.exe"
|
||||
del "%cd%\*.ppu"
|
||||
del "%cd%\*.dcu"
|
||||
del "%cd%\*.log"
|
||||
del "%cd%\*.compiled"
|
||||
del "%cd%\*.cfg"
|
||||
del "%cd%\*.dof"
|
||||
del "%cd%\*.dproj.local"
|
||||
del "%cd%\*.identcache"
|
||||
del "%cd%\*.dsk"
|
||||
del "%cd%\*.skincfg"
|
||||
del "%cd%\*.bak"
|
||||
del "%cd%\*.rsm"
|
||||
del "%cd%\*.~*"
|
104
fwzip/delphi7/Demos/ZipAnalizer/uZipAnalizer.dfm
Normal file
104
fwzip/delphi7/Demos/ZipAnalizer/uZipAnalizer.dfm
Normal file
@@ -0,0 +1,104 @@
|
||||
object dlgZipAnalizer: TdlgZipAnalizer
|
||||
Left = 301
|
||||
Top = 184
|
||||
Caption = #1042#1099#1074#1086#1076' '#1087#1072#1088#1072#1084#1077#1090#1088#1086#1074' ZIP '#1072#1088#1093#1080#1074#1072
|
||||
ClientHeight = 300
|
||||
ClientWidth = 685
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Position = poScreenCenter
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
DesignSize = (
|
||||
685
|
||||
300)
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object edPath: TLabeledEdit
|
||||
Left = 8
|
||||
Top = 24
|
||||
Width = 550
|
||||
Height = 21
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
EditLabel.Width = 124
|
||||
EditLabel.Height = 13
|
||||
EditLabel.Caption = #1059#1082#1072#1078#1080#1090#1077' '#1087#1091#1090#1100' '#1082' '#1072#1088#1093#1080#1074#1091':'
|
||||
TabOrder = 0
|
||||
OnChange = edPathChange
|
||||
end
|
||||
object btnBrowse: TButton
|
||||
Left = 560
|
||||
Top = 22
|
||||
Width = 25
|
||||
Height = 25
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '...'
|
||||
TabOrder = 1
|
||||
OnClick = btnBrowseClick
|
||||
end
|
||||
object btnAnalize: TButton
|
||||
Left = 589
|
||||
Top = 22
|
||||
Width = 75
|
||||
Height = 25
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = #1057#1090#1072#1088#1090
|
||||
Enabled = False
|
||||
TabOrder = 2
|
||||
OnClick = btnAnalizeClick
|
||||
end
|
||||
object GroupBox: TGroupBox
|
||||
Left = 8
|
||||
Top = 56
|
||||
Width = 669
|
||||
Height = 233
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
Caption = #1055#1072#1088#1072#1084#1077#1090#1088#1099' '#1072#1088#1093#1080#1074#1072':'
|
||||
TabOrder = 3
|
||||
object edReport: TMemo
|
||||
Left = 2
|
||||
Top = 15
|
||||
Width = 665
|
||||
Height = 216
|
||||
Align = alClient
|
||||
Font.Charset = RUSSIAN_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
PopupMenu = PopupMenu
|
||||
ReadOnly = True
|
||||
ScrollBars = ssBoth
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
object OpenDialog: TOpenDialog
|
||||
DefaultExt = 'zip'
|
||||
Filter = 'ZIP '#1072#1088#1093#1080#1074#1099' (*.zip)|*.zip|'#1042#1089#1077' '#1092#1072#1081#1083#1099' (*.*)|*.*'
|
||||
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
|
||||
Left = 48
|
||||
Top = 88
|
||||
end
|
||||
object PopupMenu: TPopupMenu
|
||||
OnPopup = PopupMenuPopup
|
||||
Left = 120
|
||||
Top = 88
|
||||
object mnuSave: TMenuItem
|
||||
Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100'...'
|
||||
ShortCut = 16467
|
||||
OnClick = mnuSaveClick
|
||||
end
|
||||
end
|
||||
object SaveDialog: TSaveDialog
|
||||
DefaultExt = 'txt'
|
||||
Filter = #1058#1077#1082#1089#1090#1086#1074#1099#1077' '#1092#1072#1081#1083#1099' (*.txt)|*.txt|'#1042#1089#1077' '#1092#1072#1081#1083#1099' (*.*)|*.*'
|
||||
Left = 208
|
||||
Top = 88
|
||||
end
|
||||
end
|
372
fwzip/delphi7/Demos/ZipAnalizer/uZipAnalizer.pas
Normal file
372
fwzip/delphi7/Demos/ZipAnalizer/uZipAnalizer.pas
Normal file
@@ -0,0 +1,372 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ****************************************************************************
|
||||
// * Project : FWZip - ZipAnalizer
|
||||
// * Unit Name : uZipAnalizer
|
||||
// * Purpose : <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FWZipReader
|
||||
// * Author : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Rouse_) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// * Copyright : <20> 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
|
||||
// ****************************************************************************
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// 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/
|
||||
//
|
||||
|
||||
unit uZipAnalizer;
|
||||
|
||||
{$IFDEF FPC}
|
||||
{$MODE Delphi}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{$IFnDEF FPC}
|
||||
Windows,
|
||||
{$ELSE}
|
||||
LCLIntf, LCLType,
|
||||
{$ENDIF}
|
||||
SysUtils, Classes, Controls, Forms,
|
||||
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Menus,
|
||||
|
||||
FWZipReader,
|
||||
FWZipConsts,
|
||||
FWZipUtils;
|
||||
|
||||
type
|
||||
TFWZipReaderFriendly = class(TFWZipReader);
|
||||
TFWZipReaderItemFriendly = class(TFWZipReaderItem);
|
||||
TExDataRecord = record
|
||||
Index: Integer;
|
||||
Tag: Word;
|
||||
Stream: TMemoryStream;
|
||||
end;
|
||||
TExDataRecords = array of TExDataRecord;
|
||||
|
||||
TdlgZipAnalizer = class(TForm)
|
||||
edPath: TLabeledEdit;
|
||||
btnBrowse: TButton;
|
||||
btnAnalize: TButton;
|
||||
GroupBox: TGroupBox;
|
||||
edReport: TMemo;
|
||||
OpenDialog: TOpenDialog;
|
||||
PopupMenu: TPopupMenu;
|
||||
mnuSave: TMenuItem;
|
||||
SaveDialog: TSaveDialog;
|
||||
procedure btnBrowseClick(Sender: TObject);
|
||||
procedure edPathChange(Sender: TObject);
|
||||
procedure btnAnalizeClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure mnuSaveClick(Sender: TObject);
|
||||
procedure PopupMenuPopup(Sender: TObject);
|
||||
private
|
||||
ExDataRecords: TExDataRecords;
|
||||
Zip: TFWZipReaderFriendly;
|
||||
procedure OnLoadExData(Sender: TObject; ItemIndex: Integer;
|
||||
Tag: Word; Data: TStream);
|
||||
private
|
||||
procedure ClearExData;
|
||||
procedure Log(const Value: string);
|
||||
procedure ShowEndOfCentralDir;
|
||||
procedure ShowZip64EOFCentralDirectoryLocator;
|
||||
procedure ShowZip64EOFCentralDirectoryRecord;
|
||||
procedure ShowItemData(Index: Integer);
|
||||
end;
|
||||
|
||||
var
|
||||
dlgZipAnalizer: TdlgZipAnalizer;
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
Delim = '===================================================================';
|
||||
|
||||
{$IFnDEF FPC}
|
||||
{$R *.dfm}
|
||||
{$ELSE}
|
||||
{$R *.lfm}
|
||||
{$ENDIF}
|
||||
|
||||
procedure TdlgZipAnalizer.btnAnalizeClick(Sender: TObject);
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
edReport.Lines.BeginUpdate;
|
||||
try
|
||||
edReport.Clear;
|
||||
Log(edPath.Text);
|
||||
Log(Delim);
|
||||
ClearExData;
|
||||
Zip.Clear;
|
||||
Zip.LoadFromFile(edPath.Text);
|
||||
ShowEndOfCentralDir;
|
||||
ShowZip64EOFCentralDirectoryLocator;
|
||||
ShowZip64EOFCentralDirectoryRecord;
|
||||
for I := 0 to Zip.Count - 1 do
|
||||
ShowItemData(I);
|
||||
Log('DONE');
|
||||
finally
|
||||
edReport.Lines.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.btnBrowseClick(Sender: TObject);
|
||||
begin
|
||||
UseLongNamePrefix := False;
|
||||
OpenDialog.InitialDir :=
|
||||
PathCanonicalize(ExtractFilePath(ParamStr(0)) + '..\DemoResults');
|
||||
if OpenDialog.Execute then
|
||||
begin
|
||||
edPath.Text := OpenDialog.FileName;
|
||||
edReport.Clear;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.ClearExData;
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
for I := 0 to Length(ExDataRecords) - 1 do
|
||||
ExDataRecords[I].Stream.Free;
|
||||
SetLength(ExDataRecords, 0);;
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.edPathChange(Sender: TObject);
|
||||
begin
|
||||
btnAnalize.Enabled := FileExists(edPath.Text);
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Zip := TFWZipReaderFriendly.Create;
|
||||
Zip.OnLoadExData := OnLoadExData;
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
ClearExData;
|
||||
Zip.Free;
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.Log(const Value: string);
|
||||
begin
|
||||
edReport.Lines.Add(Value);
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.mnuSaveClick(Sender: TObject);
|
||||
begin
|
||||
if SaveDialog.Execute then
|
||||
edReport.Lines.SaveToFile(SaveDialog.FileName);
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.OnLoadExData(Sender: TObject; ItemIndex: Integer;
|
||||
Tag: Word; Data: TStream);
|
||||
var
|
||||
Count: Integer;
|
||||
begin
|
||||
Count := Length(ExDataRecords);
|
||||
SetLength(ExDataRecords, Count + 1);
|
||||
ExDataRecords[Count].Index := ItemIndex;
|
||||
ExDataRecords[Count].Tag := Tag;
|
||||
ExDataRecords[Count].Stream := TMemoryStream.Create;
|
||||
ExDataRecords[Count].Stream.CopyFrom(Data, 0);
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.PopupMenuPopup(Sender: TObject);
|
||||
begin
|
||||
mnuSave.Enabled := edReport.Lines.Count > 1;
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.ShowEndOfCentralDir;
|
||||
begin
|
||||
Log('END_OF_CENTRAL_DIR_SIGNATURE found');
|
||||
with Zip.EndOfCentralDir do
|
||||
begin
|
||||
Log(Format('NumberOfThisDisk: %d', [NumberOfThisDisk]));
|
||||
Log(Format('NumberOfTheDiskWithTheStart: %d', [DiskNumberStart]));
|
||||
Log(Format('TotalNumberOfEntriesOnThisDisk: %d', [TotalNumberOfEntriesOnThisDisk]));
|
||||
Log(Format('TotalNumberOfEntries: %d', [TotalNumberOfEntries]));
|
||||
Log(Format('SizeOfTheCentralDirectory: %d', [SizeOfTheCentralDirectory]));
|
||||
Log(Format('OffsetOfStartOfCentralDirectory: %d', [RelativeOffsetOfCentralDirectory]));
|
||||
Log(Format('ZipfileCommentLength: %d', [ZipfileCommentLength]));
|
||||
if ZipfileCommentLength > 0 then
|
||||
Log(Format('Comment: %s', [Zip.Comment]));
|
||||
end;
|
||||
Log(Delim);
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.ShowItemData(Index: Integer);
|
||||
|
||||
function ByteToStr(Bytes: PByte; Size: Integer): string;
|
||||
const
|
||||
BytesHex: array[0..15] of char =
|
||||
('0', '1', '2', '3', '4', '5', '6', '7',
|
||||
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
|
||||
var
|
||||
I: integer;
|
||||
begin
|
||||
{$IFDEF FPC}
|
||||
Result := '';
|
||||
{$ENDIF}
|
||||
SetLength(Result, Size shl 1);
|
||||
for I := 0 to Size - 1 do
|
||||
begin
|
||||
Result[I * 2 + 1] := BytesHex[Bytes^ shr 4];
|
||||
Result[I * 2 + 2] := BytesHex[Bytes^ and $0F];
|
||||
Inc(Bytes);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GPBFToStr(Value: Word): string;
|
||||
|
||||
procedure AddValue(const S: string);
|
||||
begin
|
||||
if Result = '' then
|
||||
Result := S
|
||||
else
|
||||
Result := Result + ', ' + S;
|
||||
end;
|
||||
|
||||
begin
|
||||
if Value = 0 then
|
||||
begin
|
||||
Result := 'EMPTY';
|
||||
Exit;
|
||||
end;
|
||||
if PBF_CRYPTED and Value <> 0 then
|
||||
AddValue('PBF_CRYPTED');
|
||||
|
||||
if PBF_DESCRIPTOR and Value <> 0 then
|
||||
AddValue('PBF_DESCRIPTOR');
|
||||
|
||||
if PBF_UTF8 and Value <> 0 then
|
||||
AddValue('PBF_UTF8');
|
||||
|
||||
if PBF_STRONG_CRYPT and Value <> 0 then
|
||||
AddValue('PBF_STRONG_CRYPT');
|
||||
end;
|
||||
|
||||
var
|
||||
I: Integer;
|
||||
Item: TFWZipReaderItemFriendly;
|
||||
begin
|
||||
Log('CENTRAL_FILE_HEADER_SIGNATURE found');
|
||||
Item := TFWZipReaderItemFriendly(Zip.Item[Index]);
|
||||
with Item.CentralDirFileHeader do
|
||||
begin
|
||||
Log(Format('VersionMadeBy: %d', [VersionMadeBy]));
|
||||
Log(Format('VersionNeededToExtract: %d', [VersionNeededToExtract]));
|
||||
Log(Format('GeneralPurposeBitFlag: %d (%s)', [GeneralPurposeBitFlag,
|
||||
GPBFToStr(GeneralPurposeBitFlag)]));
|
||||
Log(Format('CompressionMethod: %d', [CompressionMethod]));
|
||||
Log(Format('LastModFileTimeTime: %d', [LastModFileTimeTime]));
|
||||
Log(Format('LastModFileTimeDate: %d', [LastModFileTimeDate]));
|
||||
Log(Format('Crc32: %d', [Crc32]));
|
||||
Log(Format('CompressedSize: %d', [CompressedSize]));
|
||||
Log(Format('UncompressedSize: %d', [UncompressedSize]));
|
||||
Log(Format('FilenameLength: %d', [FilenameLength]));
|
||||
if FilenameLength > 0 then
|
||||
Log('>>> FileName: ' + Item.FileName);
|
||||
Log(Format('ExtraFieldLength: %d', [ExtraFieldLength]));
|
||||
Log(Format('FileCommentLength: %d', [FileCommentLength]));
|
||||
if FileCommentLength > 0 then
|
||||
Log('>>> FileComment: ' + Item.Comment);
|
||||
Log(Format('DiskNumberStart: %d', [DiskNumberStart]));
|
||||
Log(Format('InternalFileAttributes: %d', [InternalFileAttributes]));
|
||||
Log(Format('ExternalFileAttributes: %d', [ExternalFileAttributes]));
|
||||
Log(Format('RelativeOffsetOfLocalHeader: %d', [RelativeOffsetOfLocalHeader]));
|
||||
end;
|
||||
|
||||
Log('');
|
||||
|
||||
Item.LoadLocalFileHeader;
|
||||
Log('LOCAL_FILE_HEADER_SIGNATURE found');
|
||||
with Item.LocalFileHeader do
|
||||
begin
|
||||
Log(Format('VersionNeededToExtract: %d', [VersionNeededToExtract]));
|
||||
Log(Format('GeneralPurposeBitFlag: %d (%s)', [GeneralPurposeBitFlag,
|
||||
GPBFToStr(GeneralPurposeBitFlag)]));
|
||||
Log(Format('CompressionMethod: %d', [CompressionMethod]));
|
||||
Log(Format('LastModFileTimeTime: %d', [LastModFileTimeTime]));
|
||||
Log(Format('LastModFileTimeDate: %d', [LastModFileTimeDate]));
|
||||
Log(Format('Crc32: %d', [Crc32]));
|
||||
Log(Format('CompressedSize: %d', [CompressedSize]));
|
||||
Log(Format('UncompressedSize: %d', [UncompressedSize]));
|
||||
Log(Format('FilenameLength: %d', [FilenameLength]));
|
||||
Log(Format('ExtraFieldLength: %d', [ExtraFieldLength]));
|
||||
end;
|
||||
|
||||
if ssZIP64 in Item.PresentStreams then
|
||||
begin
|
||||
Log('');
|
||||
Log('SUPPORTED_EXDATA_ZIP64 found');
|
||||
with Item do
|
||||
begin
|
||||
Log(Format('UncompressedSize: %d', [UncompressedSize]));
|
||||
Log(Format('CompressedSize: %d', [CompressedSize]));
|
||||
Log(Format('RelativeOffsetOfLocalHeader: %d', [RelativeOffsetOfLocalHeader]));
|
||||
Log(Format('DiskNumberStart: %d', [DiskNumberStart]));
|
||||
end;
|
||||
end;
|
||||
|
||||
if ssNTFS in Item.PresentStreams then
|
||||
begin
|
||||
Log('');
|
||||
Log('SUPPORTED_EXDATA_NTFSTIME found');
|
||||
end;
|
||||
|
||||
for I := 0 to Length(ExDataRecords) - 1 do
|
||||
if ExDataRecords[I].Index = Index then
|
||||
begin
|
||||
Log('');
|
||||
Log(Format('UNKNOWN TAG (%d) found', [ExDataRecords[I].Tag]));
|
||||
Log(Format('ExData size %d', [ExDataRecords[I].Stream.Size]));
|
||||
Log('ExData dump:');
|
||||
Log(ByteToStr(ExDataRecords[I].Stream.Memory, ExDataRecords[I].Stream.Size));
|
||||
end;
|
||||
|
||||
Log(Delim);
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.ShowZip64EOFCentralDirectoryLocator;
|
||||
begin
|
||||
with Zip.Zip64EOFCentralDirectoryLocator do
|
||||
begin
|
||||
if Signature <> ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE then Exit;
|
||||
Log('ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE found');
|
||||
Log(Format('NumberOfTheDisk: %d', [DiskNumberStart]));
|
||||
Log(Format('RelativeOffset: %d', [RelativeOffset]));
|
||||
Log(Format('TotalNumberOfDisks: %d', [TotalNumberOfDisks]));
|
||||
end;
|
||||
Log(Delim);
|
||||
end;
|
||||
|
||||
procedure TdlgZipAnalizer.ShowZip64EOFCentralDirectoryRecord;
|
||||
begin
|
||||
with Zip.Zip64EOFCentralDirectoryRecord do
|
||||
begin
|
||||
if Zip64EndOfCentralDirSignature <> ZIP64_END_OF_CENTRAL_DIR_SIGNATURE then Exit;
|
||||
Log('ZIP64_END_OF_CENTRAL_DIR_SIGNATURE found');
|
||||
Log(Format('SizeOfZip64EOFCentralDirectoryRecord: %d', [SizeOfZip64EOFCentralDirectoryRecord]));
|
||||
Log(Format('VersionMadeBy: %d', [VersionMadeBy]));
|
||||
Log(Format('VersionNeededToExtract: %d', [VersionNeededToExtract]));
|
||||
Log(Format('number of this disk: %d', [NumberOfThisDisk]));
|
||||
Log(Format('number of the disk with the start of the central directory: %d', [DiskNumberStart]));
|
||||
Log(Format('total number of entries in the central directory on this disk: %d', [TotalNumberOfEntriesOnThisDisk]));
|
||||
Log(Format('total number of entries in the central directory: %d', [TotalNumberOfEntries]));
|
||||
Log(Format('size of the central directory: %d', [SizeOfTheCentralDirectory]));
|
||||
Log(Format('offset of start of central directory with respect to the starting disk number: %d', [RelativeOffsetOfCentralDirectory]));
|
||||
end;
|
||||
Log(Delim);
|
||||
end;
|
||||
|
||||
end.
|
Reference in New Issue
Block a user