Стартовый пул
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