|
tHeaderData – структура, которая используется в ReaderHeader.
typedef struct {
char ArcName[260];
char FileName[260];
int Flags;
int PackSize;
int UnpSize;
int HostOS;
int FileCRC;
int FileTime;
int UnpVer;
int Method;
int FileAttr;
char* CmtBuf;
int CmtBufSize;
int CmtSize;
int CmtState;
} tHeaderData;THeaderData=packed record
ArcName: array[0..259] of char;
FileName: array[0..259] of char;
Flags,
PackSize,
UnpSize,
HostOS,
FileCRC,
FileTime,
UnpVer,
Method,
FileAttr: longint;
CmtBuf: PChar;
CmtBufSize,
CmtSize,
CmtState: longint;
end;
| |
Описание
ArcName, FileName, PackSize, UnpSize содержат соответственно имя файла архива, имя файла в архиве, размер упакованного файла и размер распакованного файла.
HostOS добавлен только для совместимости с unrar.dll, должен быть присвоен ноль.
FileCRC – это 32-битная контрольная сумма файла CRC (cyclic redundancy check). Если не поддерживается, присвойте ноль.
Значения Cmt* могут быть использованы для передачи комментария к файлу. Пока не используются в Total Commander, поэтому можете присвоить ноль.
FileAttr можно присвоить любую комбинацию следующих значений:
| Значение | Описание
| 0x1 | Файл только для чтения
| | 0x2 | Скрытый файл
| | 0x4 | Системный файл
| | 0x8 | Метка тома Volume ID file
| | 0x10 | Каталог
| | 0x20 | Архивный файл
| | 0x3F | Любой файл
| |
FileTime содержит дату и время последнего изменения файла. Используйте следующий алгоритм, чтобы присвоить значение:
FileTime = (year - 1980) << 25 | month << 21 | day << 16 | hour << 11 | minute << 5 | second/2;
FileTime:= (year - 1980) shl 25 | month shl 21 | day shl 16 | hour shl 11 | minute shl 5 | second div 2;
Убедитесь, что:
year – год является числом из четырёх цифр со значением между 1980 и 2100
month – месяц является числом со значением между 1 и 12
hour часы в 24-часовом формате
|