https://github.com/pascalvault/lazarus_unpacker
PV_Unpacker - simple pure Pascal library to unpack various archives (ZIP, RAR, LZMA, TAR...)
https://github.com/pascalvault/lazarus_unpacker
Last synced: 3 months ago
JSON representation
PV_Unpacker - simple pure Pascal library to unpack various archives (ZIP, RAR, LZMA, TAR...)
- Host: GitHub
- URL: https://github.com/pascalvault/lazarus_unpacker
- Owner: PascalVault
- License: mit
- Created: 2023-09-28T16:47:07.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-20T12:29:37.000Z (over 2 years ago)
- Last Synced: 2025-08-04T06:54:33.239Z (9 months ago)
- Language: Pascal
- Size: 289 KB
- Stars: 17
- Watchers: 4
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Lazarus_Unpacker
PV_Unpacker - simple pure Pascal library to unpack various archives (ZIP, RAR, LZMA, TAR...)
See also:
https://github.com/PascalVault/Lazarus_Packer
## Demo application ##

## Supported formats (46+) ##
- .ZIP, .JAR, .CBZ, .DOCX (store, deflate, lzma, bzip2)
- .RAR, .CBR (version 4 and 5; store)
- .TAR, .CBT
- .ARJ (store, methods: 1-3)
- .LZH, .LHA (store, lh1, lh4, lh5, lh6, lh7, lhx)
- .ZOO (store, lzh)
- .AR (store, lh4, lh5)
- BlackHole .BH (store, deflate)
- .BIG
- BGA .BZA/.GZA
- .CPIO
- .DPK
- .DRS
- .FTG
- .GZIP, .GZ
- .BZIP2, .BZ2
- .HA
- .LBR
- .LZ, .LZMA
- .PCK
- Homm3 .LOD
- Quake .PAK
- Doom .WAD
- Quake .WAD
and more!
## Unsupported ###
- encrypted ZIP, RAR archives
- RAR files that use method different than "store"
- ARJ files that use method "fastest"
## Comming soon ##
- progress bar
- integrity verification
## Usage ###
use PV_Unpacker;
...
var Unp: TUnpacker;
begin
Unp := TUnpacker.Create(OpenDialog1.Filename);
if Unp.GetFormat = '' then ShowMessage('Unsupported');
for i:=0 to Unp.Count-1 do begin
Memo1.Lines.Add('name ' + Unp.GetName(i) + ', crc ' + IntToHex( Unp.GetCRC(i)) + ', date ' + DateToStr(Unp.GetDate(i)) + ', packed size ' + IntToStr(Unp.GetPackedSize(i)) );
if Unp.CanUnpack(i) then Unp.Extract(i, Unp.GetName(i) );
end;
Unp.Free;
end;