unit kunzip; interface uses Windows; const kunzipdll = 'kunzip.dll'; var kunzip_inflate_init: function: integer; cdecl; kunzip_inflate_free: function: integer; cdecl; kunzip_all: function(zip_filename, base_dir: PChar): integer; cdecl; kunzip_next: function(zip_filename, base_dir: PChar; offset: integer): integer; cdecl; kunzip_count_files: function(zip_filename: PChar): integer; cdecl; kunzip_get_offset_by_number: function(zip_filename: PChar; file_count: integer): integer; cdecl; kunzip_get_offset_by_name: function(zip_filename, compressed_filename: PChar; match_flags, skip_offset: integer): integer; cdecl; kunzip_get_name: function(zip_filename, name: PChar; offset: integer): integer; cdecl; kunzip_get_filesize: function(zip_filename: PChar; offset: integer): integer; cdecl; kunzip_get_modtime: function(zip_filename: PChar; offset: integer): integer; cdecl; kunzip_print_version: function: integer; cdecl; kunzip_get_version: function(version_string: PChar): integer; cdecl; function load_kunzip(const FileName: WideString): THandle; procedure unload_kunzip(Handle: THandle); implementation function load_kunzip(const FileName: WideString): THandle; var OldMode: integer; begin OldMode := SetErrorMode($8001); result := LoadLibraryW(PWideChar(FileName)); SetErrorMode(OldMode); if result <> 0 then begin @kunzip_inflate_init := GetProcAddress(result, PChar('kunzip_inflate_init')); @kunzip_inflate_free := GetProcAddress(result, PChar('kunzip_inflate_free')); @kunzip_all := GetProcAddress(result, PChar('kunzip_all')); @kunzip_next := GetProcAddress(result, PChar('kunzip_next')); @kunzip_count_files := GetProcAddress(result, PChar('kunzip_count_files')); @kunzip_get_offset_by_number := GetProcAddress(result, PChar('kunzip_get_offset_by_number')); @kunzip_get_offset_by_name := GetProcAddress(result, PChar('kunzip_get_offset_by_name')); @kunzip_get_name := GetProcAddress(result, PChar('kunzip_get_name')); @kunzip_get_filesize := GetProcAddress(result, PChar('kunzip_get_filesize')); @kunzip_get_modtime := GetProcAddress(result, PChar('kunzip_get_modtime')); @kunzip_print_version := GetProcAddress(result, PChar('kunzip_print_version')); @kunzip_get_version := GetProcAddress(result, PChar('kunzip_get_version')); if(@kunzip_inflate_init = nil) or (@kunzip_inflate_free = nil) or (@kunzip_all = nil) or (@kunzip_next = nil) or (@kunzip_count_files = nil) or (@kunzip_get_offset_by_number = nil) or (@kunzip_get_offset_by_name = nil) or (@kunzip_get_name = nil) or (@kunzip_get_filesize = nil) or (@kunzip_get_modtime = nil) or (@kunzip_print_version = nil) or (@kunzip_get_version = nil) then begin FreeLibrary(result); result := 0; end; end; end; procedure unload_kunzip(Handle: THandle); begin if Handle <> 0 then FreeLibrary(Handle); Handle := 0; end; end.