Работа с ZIP архивами

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Alex
Старожил
Сообщения: 211
Зарегистрирован: 29 Август 2005, 14:54
Откуда: Белоруссия

Работа с ZIP архивами

Сообщение Alex »

Уважаемое сообщество!
Может быть кто-то сталкивался с необходимостью упаковки / распаковки ZIP архивов?
DZC32 библиотека , насколько я разобрался, позволяет это делать, но не позволяет паковать / распаковывать с паролями.
Быть может , есть что-то легко юзаемое и поддерживающее ZIP архивы с паролями????
С уважением.
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Работа с ZIP архивами

Сообщение seawolf »

Надо глянуть zlib. Может там это есть!
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: Работа с ZIP архивами

Сообщение lsgsoftware »

С ЗИП-архивами с паролями я регулярно работаю в своих
прогах.Ну, древние pkzip pkunzip еще со времен ДОС которые,
работают нормально, но проблемы с длинными именами и т.д.
Есть у меня 32-разрядная версия, которая из трех экзешников
pkzipc,pkzip,pkunzip, но первый экзешник уже довольно большой
примерно 260Кб. А так все вроде работает без проблем и
запускается из прог через Ran с параметрами как обычно
Аватара пользователя
Alex
Старожил
Сообщения: 211
Зарегистрирован: 29 Август 2005, 14:54
Откуда: Белоруссия

Re: Работа с ZIP архивами

Сообщение Alex »

Да , как вариант. Но в идеале здорово было бы использовать что-то внутреннее, не вызываемое как внешнее приложение.
Короче говоря, пошарить в Сети на предмет 32-х битных вышеперечисленных прог??
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Re: Работа с ZIP архивами

Сообщение ru_alex »

LSZip тебе поможет, давно использем...
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

Re: Работа с ZIP архивами

Сообщение Артур »

ru_alex писал(а):LSZip тебе поможет, давно использем...
Хочется сваять самоустанавливающийся архив, но пример SFX выдает ошибку -800 и вообще там мало понятно
Любить и обещать ничего не стоит
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Работа с ZIP архивами

Сообщение seawolf »

я уже писал надо глянуть zlib. Там это точно есть - юзал версию 1.2.3.0 zlibwapi.dll
Упаковка с паролем - функция zipOpenNewFileInZip3 (без пароля zipOpenNewFileInZip)
Распаковка - с паролем unzOpenCurrentFilePassword (без пароля UnzOpenCurrentFile)
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

Re: Работа с ZIP архивами

Сообщение Артур »

seawolf писал(а):я уже писал надо глянуть zlib. Там это точно есть - юзал версию 1.2.3.0 zlibwapi.dll
Упаковка с паролем - функция zipOpenNewFileInZip3 (без пароля zipOpenNewFileInZip)
Распаковка - с паролем unzOpenCurrentFilePassword (без пароля UnzOpenCurrentFile)
Если юзал, поделись примером, желательно демонстрирующим самоустановку программы
Любить и обещать ничего не стоит
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Работа с ZIP архивами

Сообщение seawolf »

Самоустановкой не занимался - для setup есть отличная бесплатная вещь как InnoSetup. Пару строчек кода найду если кому надо запаковывать и распаковыать - там ничего архисложного нет.
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

Re: Работа с ZIP архивами

Сообщение Артур »

Про это я в курсе, спасибо
Любить и обещать ничего не стоит
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Работа с ZIP архивами

Сообщение seawolf »

Прототипы функций

!Для чтения из архива
unzOpenCurrentFilePassword (Long file, *Cstring password),Short,Pascal,Raw,Name('unzOpenCurrentFilePassword')
unzOpenCurrentFile (Long file),Short,Pascal,Raw,Name('UnzOpenCurrentFile')
! Для добавления в архив
zipOpenNewFileInZip(Long file, |
*CString Filename, |
*Group ZipInfo, |
Ulong extrafield_local, |
uShort size_extrafield_local, |
Ulong extrafield_global, |
uShort size_extrafield_global, |
*CString comment, |
Short method=8, |
Short level=0 |
),Short,Pascal,Raw,Name('ZipOpenNewFileInZip')
zipOpenNewFileInZip3(Long file, |
*CString Filename, |
*Group ZipInfo, |
Ulong extrafield_local, |
uShort size_extrafield_local, |
Ulong extrafield_global, |
uShort size_extrafield_global, |
*CString comment, |
Short method=8, |
Short level=0, |
Short raw, |
Short windowBits, |
Short memLevel, |
Short strategy, |
*CString password,|
uLong crcForCrypting |
),Short,Pascal,Raw,Name('ZipOpenNewF

Собственно код

! Для добавления в архив PwlZip ваш пароль
ZipHandle = zipOpen(NEW_ZIPPACK, 0)
If EncryptFlag = 1
Res# = zipOpenNewFileInZip3(ZipHandle, PATH_CURZIP, Zinfo, 0, 0, 0, 0, Comment, Z_DEFLATED, CompressionFlag,0,-15,8,0,PwlZip,0)
Else
Res# = zipOpenNewFileInZip(ZipHandle, PATH_CURZIP, Zinfo, 0, 0, 0, 0, Comment, Z_DEFLATED, CompressionFlag)
.

!Для чтения из архива
ZipHandle = unzOpen(PATH_INFILE_PACK)
LocRes1=UnzGoToFirstFile(ZipHandle)
If unzGetCurrentFileInfo(ZipHandle,FinFo,PATH_NAMEUPD_TMP,Size(PATH_NAMEUPD_TMP),0,0,Comment,Size(Comment)).
If FinFo.Flag = 3 !признак шифрованного zip по крайней мере так я понял после мыкания с архивами
LocRes2 = unzOpenCurrentFilePassword(ZipHandle,PwlZip)
Else
LocRes2 = UnzOpenCurrentFile(ZipHandle)
.

Все остальные функции описаны в примерах использования Zlib на этом форуме
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

Re: Работа с ZIP архивами

Сообщение Артур »

Спасибо за информацию
Любить и обещать ничего не стоит
Ответить