function compress2 (dest : Pbyte;
var destLen : cardinal;
const source : array of byte;
sourceLen : cardinal;
level : integer) : integer;
var
stream : z_stream;
err : integer;
begin
stream.next_in := Pbyte(@source);
stream.avail_in := cardinal(sourceLen);
stream.next_out := dest;
stream.avail_out := cardinal(destLen);
.....
err := deflateInit(stream, level);
.....
err := deflate(stream, Z_FINISH);
if (err <> Z_STREAM_END) then
begin
deflateEnd(stream);
if err = Z_OK then
compress2 := Z_BUF_ERROR
else
compress2 := err;
exit;
end;
destLen := stream.total_out;
err := deflateEnd(stream);
compress2 := err;
end;