Стартовый пул
This commit is contained in:
162
unrar/Examples/Free Pascal/UnRAR.pp
Normal file
162
unrar/Examples/Free Pascal/UnRAR.pp
Normal file
@@ -0,0 +1,162 @@
|
||||
// Free Pascal interface unit for UnRAR.dll
|
||||
//
|
||||
// Ported to Free Pascal by Alexey Fayans, fidonet: 2:5030/1997, e-mail: shad@shad.pp.ru
|
||||
|
||||
{$IFNDEF NO_SMART_LINK}
|
||||
{$SMARTLINK ON}
|
||||
{$ENDIF}
|
||||
{$MODE objfpc}
|
||||
{$CALLING stdcall}
|
||||
{$PACKRECORDS C}
|
||||
|
||||
unit UnRAR;
|
||||
|
||||
interface
|
||||
|
||||
uses Windows;
|
||||
|
||||
const
|
||||
ERAR_END_ARCHIVE = 10;
|
||||
ERAR_NO_MEMORY = 11;
|
||||
ERAR_BAD_DATA = 12;
|
||||
ERAR_BAD_ARCHIVE = 13;
|
||||
ERAR_UNKNOWN_FORMAT = 14;
|
||||
ERAR_EOPEN = 15;
|
||||
ERAR_ECREATE = 16;
|
||||
ERAR_ECLOSE = 17;
|
||||
ERAR_EREAD = 18;
|
||||
ERAR_EWRITE = 19;
|
||||
ERAR_SMALL_BUF = 20;
|
||||
ERAR_UNKNOWN = 21;
|
||||
|
||||
RAR_OM_LIST = 0;
|
||||
RAR_OM_EXTRACT = 1;
|
||||
|
||||
RAR_SKIP = 0;
|
||||
RAR_TEST = 1;
|
||||
RAR_EXTRACT = 2;
|
||||
|
||||
RAR_VOL_ASK = 0;
|
||||
RAR_VOL_NOTIFY = 1;
|
||||
|
||||
RAR_DLL_VERSION = 3;
|
||||
|
||||
UCM_CHANGEVOLUME = 0;
|
||||
UCM_PROCESSDATA = 1;
|
||||
UCM_NEEDPASSWORD = 2;
|
||||
|
||||
type
|
||||
PRARHeaderData = ^TRARHeaderData;
|
||||
TRARHeaderData = record
|
||||
ArcName: array[0..259] of Char;
|
||||
FileName: array[0..259] of Char;
|
||||
Flags: UInt;
|
||||
PackSize: UInt;
|
||||
UnpSize: UInt;
|
||||
HostOS: UInt;
|
||||
FileCRC: UInt;
|
||||
FileTime: UInt;
|
||||
UnpVer: UInt;
|
||||
Method: UInt;
|
||||
FileAttr: UInt;
|
||||
CmtBuf: PChar;
|
||||
CmtBufSize: UInt;
|
||||
CmtSize: UInt;
|
||||
CmtState: UInt;
|
||||
end;
|
||||
|
||||
PRARHeaderDataEx = ^TRARHeaderDataEx;
|
||||
TRARHeaderDataEx = record
|
||||
ArcName: array [0..1023] of Char;
|
||||
ArcNameW: array [0..1023] of WideChar;
|
||||
FileName: array [0..1023] of Char;
|
||||
FileNameW: array [0..1023] of WideChar;
|
||||
Flags: UInt;
|
||||
PackSize: UInt;
|
||||
PackSizeHigh: UInt;
|
||||
UnpSize: UInt;
|
||||
UnpSizeHigh: UInt;
|
||||
HostOS: UInt;
|
||||
FileCRC: UInt;
|
||||
FileTime: UInt;
|
||||
UnpVer: UInt;
|
||||
Method: UInt;
|
||||
FileAttr: UInt;
|
||||
CmtBuf: PChar;
|
||||
CmtBufSize: UInt;
|
||||
CmtSize: UInt;
|
||||
CmtState: UInt;
|
||||
Reserved: array [0..1023] of UInt;
|
||||
end;
|
||||
|
||||
PRAROpenArchiveData = ^TRAROpenArchiveData;
|
||||
TRAROpenArchiveData = record
|
||||
ArcName: PChar;
|
||||
OpenMode: UInt;
|
||||
OpenResult: UInt;
|
||||
CmtBuf: PChar;
|
||||
CmtBufSize: UInt;
|
||||
CmtSize: UInt;
|
||||
CmtState: UInt;
|
||||
end;
|
||||
|
||||
PRAROpenArchiveDataEx = ^TRAROpenArchiveDataEx;
|
||||
TRAROpenArchiveDataEx = record
|
||||
ArcName: PChar;
|
||||
ArcNameW: PWideChar;
|
||||
OpenMode: UInt;
|
||||
OpenResult: UInt;
|
||||
CmtBuf: PChar;
|
||||
CmtBufSize: UInt;
|
||||
CmtSize: UInt;
|
||||
CmtState: UInt;
|
||||
Flags: UInt;
|
||||
Reserved: array [0..31] of UInt;
|
||||
end;
|
||||
|
||||
TUnrarCallback = function(Msg: UInt; UserData, P1, P2: Longint): Integer;
|
||||
|
||||
function RAROpenArchive(ArchiveData: PRAROpenArchiveData): THandle;
|
||||
function RAROpenArchiveEx(ArchiveData: PRAROpenArchiveDataEx): THandle;
|
||||
function RARCloseArchive(hArcData: THandle): Integer;
|
||||
function RARReadHeader(hArcData: THandle; HeaderData: PRARHeaderData): Integer;
|
||||
function RARReadHeaderEx(hArcData: THandle; HeaderData: PRARHeaderDataEx): Integer;
|
||||
function RARProcessFile(hArcData: THandle; Operation: Integer; DestPath, DestName: PChar): Integer;
|
||||
function RARProcessFileW(hArcData: THandle; Operation: Integer; DestPath, DestName: PWideChar): Integer;
|
||||
procedure RARSetCallback(hArcData: THandle; UnrarCallback: TUnrarCallback; UserData: Longint);
|
||||
procedure RARSetPassword(hArcData: THandle; Password: PChar);
|
||||
|
||||
// obsolete functions
|
||||
type
|
||||
TChangeVolProc = function(ArcName: PChar; Mode: Integer): Integer;
|
||||
TProcessDataProc = function(Addr: PUChar; Size: Integer): Integer;
|
||||
|
||||
procedure RARSetChangeVolProc(hArcData: THandle; ChangeVolProc: TChangeVolProc);
|
||||
procedure RARSetProcessDataProc(hArcData: THandle; ProcessDataProc: TProcessDataProc);
|
||||
|
||||
implementation
|
||||
|
||||
function RAROpenArchive(ArchiveData: PRAROpenArchiveData): THandle;
|
||||
external 'unrar.dll' name 'RAROpenArchive';
|
||||
function RAROpenArchiveEx(ArchiveData: PRAROpenArchiveDataEx): THandle;
|
||||
external 'unrar.dll' name 'RAROpenArchiveEx';
|
||||
function RARCloseArchive(hArcData: THandle): Integer;
|
||||
external 'unrar.dll' name 'RARCloseArchive';
|
||||
function RARReadHeader(hArcData: THandle; HeaderData: PRARHeaderData): Integer;
|
||||
external 'unrar.dll' name 'RARReadHeader';
|
||||
function RARReadHeaderEx(hArcData: THandle; HeaderData: PRARHeaderDataEx): Integer;
|
||||
external 'unrar.dll' name 'RARReadHeaderEx';
|
||||
function RARProcessFile(hArcData: THandle; Operation: Integer; DestPath, DestName: PChar): Integer;
|
||||
external 'unrar.dll' name 'RARProcessFile';
|
||||
function RARProcessFileW(hArcData: THandle; Operation: Integer; DestPath, DestName: PWideChar): Integer;
|
||||
external 'unrar.dll' name 'RARProcessFileW';
|
||||
procedure RARSetCallback(hArcData: THandle; UnrarCallback: TUnrarCallback; UserData: Longint);
|
||||
external 'unrar.dll' name 'RARSetCallback';
|
||||
procedure RARSetPassword(hArcData: THandle; Password: PChar);
|
||||
external 'unrar.dll' name 'RARSetPassword';
|
||||
procedure RARSetChangeVolProc(hArcData: THandle; ChangeVolProc: TChangeVolProc);
|
||||
external 'unrar.dll' name 'RARSetChangeVolProc';
|
||||
procedure RARSetProcessDataProc(hArcData: THandle; ProcessDataProc: TProcessDataProc);
|
||||
external 'unrar.dll' name 'RARSetProcessDataProc';
|
||||
|
||||
end.
|
Reference in New Issue
Block a user