Работа с ZIP архивами
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Работа с ZIP архивами
Уважаемое сообщество!
Может быть кто-то сталкивался с необходимостью упаковки / распаковки ZIP архивов?
DZC32 библиотека , насколько я разобрался, позволяет это делать, но не позволяет паковать / распаковывать с паролями.
Быть может , есть что-то легко юзаемое и поддерживающее ZIP архивы с паролями????
С уважением.
Может быть кто-то сталкивался с необходимостью упаковки / распаковки ZIP архивов?
DZC32 библиотека , насколько я разобрался, позволяет это делать, но не позволяет паковать / распаковывать с паролями.
Быть может , есть что-то легко юзаемое и поддерживающее ZIP архивы с паролями????
С уважением.
-
- Ветеран
- Сообщения: 311
- Зарегистрирован: 08 Июль 2005, 22:04
Re: Работа с ZIP архивами
С ЗИП-архивами с паролями я регулярно работаю в своих
прогах.Ну, древние pkzip pkunzip еще со времен ДОС которые,
работают нормально, но проблемы с длинными именами и т.д.
Есть у меня 32-разрядная версия, которая из трех экзешников
pkzipc,pkzip,pkunzip, но первый экзешник уже довольно большой
примерно 260Кб. А так все вроде работает без проблем и
запускается из прог через Ran с параметрами как обычно
прогах.Ну, древние pkzip pkunzip еще со времен ДОС которые,
работают нормально, но проблемы с длинными именами и т.д.
Есть у меня 32-разрядная версия, которая из трех экзешников
pkzipc,pkzip,pkunzip, но первый экзешник уже довольно большой
примерно 260Кб. А так все вроде работает без проблем и
запускается из прог через Ran с параметрами как обычно
Re: Работа с ZIP архивами
Да , как вариант. Но в идеале здорово было бы использовать что-то внутреннее, не вызываемое как внешнее приложение.
Короче говоря, пошарить в Сети на предмет 32-х битных вышеперечисленных прог??
Короче говоря, пошарить в Сети на предмет 32-х битных вышеперечисленных прог??
Re: Работа с ZIP архивами
Хочется сваять самоустанавливающийся архив, но пример SFX выдает ошибку -800 и вообще там мало понятноru_alex писал(а):LSZip тебе поможет, давно использем...
Любить и обещать ничего не стоит
Re: Работа с ZIP архивами
я уже писал надо глянуть zlib. Там это точно есть - юзал версию 1.2.3.0 zlibwapi.dll
Упаковка с паролем - функция zipOpenNewFileInZip3 (без пароля zipOpenNewFileInZip)
Распаковка - с паролем unzOpenCurrentFilePassword (без пароля UnzOpenCurrentFile)
Упаковка с паролем - функция zipOpenNewFileInZip3 (без пароля zipOpenNewFileInZip)
Распаковка - с паролем unzOpenCurrentFilePassword (без пароля UnzOpenCurrentFile)
Re: Работа с ZIP архивами
Если юзал, поделись примером, желательно демонстрирующим самоустановку программыseawolf писал(а):я уже писал надо глянуть zlib. Там это точно есть - юзал версию 1.2.3.0 zlibwapi.dll
Упаковка с паролем - функция zipOpenNewFileInZip3 (без пароля zipOpenNewFileInZip)
Распаковка - с паролем unzOpenCurrentFilePassword (без пароля UnzOpenCurrentFile)
Любить и обещать ничего не стоит
Re: Работа с ZIP архивами
Самоустановкой не занимался - для setup есть отличная бесплатная вещь как InnoSetup. Пару строчек кода найду если кому надо запаковывать и распаковыать - там ничего архисложного нет.
Re: Работа с ZIP архивами
Прототипы функций
!Для чтения из архива
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 на этом форуме
!Для чтения из архива
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 на этом форуме