This unit allows you to easily compress and decompress buffers and strings like in PHP. Main goal of this unit is to be as small as possible.
- compiled demo is ~80 kB in size
- adding unit to uses section increases binary size by ~45 kB, even less if you already use zlib units for other things
Compression |
Decompression |
Function | Format | Status |
---|
gzdeflate() | DEFLATE | ✔ | gzcompress() | ZLIB | ✔ | gzencode() | GZIP | ✔ |
|
Function | Format | Status |
---|
gzinflate() | DEFLATE | ✔ | gzuncompress() | ZLIB | ✔ | gzdecode() | GZIP | ✔ | zdecompress() | ANY | ✔ |
|
compressed := gzencode('some string');
decompressed := gzdecode(compressed);
Use zdecompress()
to auto detect stream type and decompress:
compressed := gzencode('some string');
decompressed := zdecompress(compressed);
// compress whole buffer to DEFLATE at once
function gzdeflate(data: pointer; size: dword; var output: pointer; var outputsize: dword; level: dword=9): boolean;
// compress whole string to DEFLATE at once
function gzdeflate(str: string; level: dword=9): string;
// compress whole bytes to DEFLATE at once
function gzdeflate(bytes: TBytes; level: dword=9): TBytes;
// decompress whole DEFLATE buffer at once
function gzinflate(data: pointer; size: dword; var output: pointer; var outputsize: dword): boolean;
// decompress whole DEFLATE string at once
function gzinflate(str: string): string;
// decompress whole DEFLATE bytes at once
function gzinflate(bytes: TBytes): TBytes;
// compress whole string to ZLIB at once
function gzcompress(str: string; level: dword=9): string;
// compress whole buffer to ZLIB at once
function gzcompress(bytes: TBytes; level: dword=9): TBytes;
// decompress whole ZLIB buffer at once
function gzuncompress(data: pointer; size: dword; var output: pointer; var outputsize: dword): boolean;
// decompress whole ZLIB string at once
function gzuncompress(str: string): string;
// decompress whole ZLIB buffer at once
function gzuncompress(bytes: TBytes): TBytes;
// compress whole buffer to GZIP at once
function gzencode(data: pointer; size: dword; var output: pointer; var outputsize: dword; level: dword=9; filename: string=''; comment: string=''): boolean;
// compress whole string to GZIP at once
function gzencode(str: string; level: dword=9; filename: string=''; comment: string=''): string;
// compress whole string to GZIP at once
function gzencode(bytes: TBytes; level: dword=9; filename: string=''; comment: string=''): TBytes;
// decompress whole GZIP buffer at once
function gzdecode(data: pointer; size: dword; var output: pointer; var outputsize: dword): boolean;
// decompress whole GZIP string at once
function gzdecode(str: string): string;
// decompress whole GZIP string at once
function gzdecode(bytes: TBytes): TBytes;
// try to detect buffer format and decompress it at once
function zdecompress(data: pointer; size: dword; var output: pointer; var outputsize: dword): boolean;
// try to detect string format and decompress it at once
function zdecompress(str: string): string;
// try to detect bytes format and decompress it at once
function zdecompress(bytes: TBytes): TBytes;
Additional unit to handle bigger files. Read & write & compress/decompress by chunks.
Compression |
Decompression |
Function | Format | Status |
---|
gzdeflate_file() | DEFLATE | ❌ | gzcompress_file() | ZLIB | ❌ | gzencode_file() | GZIP | ✔ |
|
Function | Format | Status |
---|
gzinflate_file() | DEFLATE | ❌ | gzuncompress_file() | ZLIB | ❌ | gzdecode_file() | GZIP | ✔ |
|
// compress a file to GZIP
function gzencode_file(src, dst: string; level: dword=9; filename: string=''; comment: string=''; progresscb: tzprogresscb=nil; resolution: dword=100): boolean;
// decompress a GZIP file
function gzdecode_file(src, dst: string; progresscb: tzprogresscb=nil; resolution: dword=100): boolean;
A callback may be provided to these functions. Callback function may abort ongoing operation by returning false.