Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: sergek от Декабрь 09, 2012, 12:07



Название: zip
Отправлено: sergek от Декабрь 09, 2012, 12:07
Коллеги, что посоветуете в качестве самого легкого решения для распаковки zip-архива? Переносимое для win и linux.
Нужно только распаковать (без лишних функций).


Название: Re: zip
Отправлено: kambala от Декабрь 09, 2012, 21:22
консольная программа zip вроде есть и там и там. а так — есть в сети какой-то QZipReader кажется.


Название: Re: zip
Отправлено: Bepec от Декабрь 09, 2012, 21:25
А qCompress и qUncompress не зипуют? Когда то вроде читал, что это и есть алгоритм зипа?

PS мб конечно это мой бред :D


Название: Re: zip
Отправлено: sergek от Декабрь 09, 2012, 21:37
Цитировать
А qCompress и qUncompress не зипуют?
Нет. Это было бы славно.
Цитировать
Когда то вроде читал, что это и есть алгоритм зипа?
Да. И тем не менее, zip и zlib - разные вещи. Искал в сети решение по конвертации форматов, не нашел.

Цитировать
есть в сети какой-то QZipReader кажется
Вот я и склоняюсь к QZipReader. Этот класс включен в Qt, но недокументирован и может быть исключен в любой момент. Ладно, буду отгребать по мере поступления...
А так использовать просто - нужно только скопировать в каталог проекта qzipreader_p.h (даже не добавляя его в профайл, взять его можно из исходников) и в файле, где используется QZipReader, включить этот заголовочный файл. Недостаток в том, что разархивирование выполняется только в каталог, а хотелось бы в QByteArray.
И настораживает, что реализация находится в библиотеке libQtGui. Будет ли это работать в консольном приложении (можно ли будет подключить к нему эту либу)?


Название: Re: zip
Отправлено: vregess от Декабрь 10, 2012, 07:01
QuaZip (http://quazip.sourceforge.net/) же. Почему никто никогда ее не вспоминает?


Название: Re: zip
Отправлено: sergek от Декабрь 10, 2012, 08:52
Я пробовал, для моей задачи слишком громоздко, к тому же, GPL. Мне всего-то нужно - получить от севера zip и распаковать. Прикручивать полноценную поддержку zip не хочется.


Название: Re: zip
Отправлено: fuCtor от Декабрь 12, 2012, 18:16
Я пробовал, для моей задачи слишком громоздко, к тому же, GPL. Мне всего-то нужно - получить от севера zip и распаковать. Прикручивать полноценную поддержку zip не хочется.
Если не хочется брать целиком, то можно посмотреть как реализовано там и сделать свою реализацию (помнится там не сложно). Формально, думаю, все будет лицензионно чисто.


Название: Re: zip
Отправлено: sergek от Январь 20, 2013, 17:59
Коллеги, по использованию QZipReader/Writer хотелось бы уточнить одну деталь.
При использовании модуля GUI, ничего не надо включать в проект - достаточно в каталог проекта положить файл qzipreader_p.h (или qzipwriter_p.h, в зависимости от того, что нужно), а в файле, где используется класс библиотеки, его включить include'ом, и все.

А вот если нужно консольное приложение (запустить гуёвое, например, cron'ом просто так не получится), тут интереснее - нужно включить в проект qzip.cpp, а рядом положить qzipreader_p.h, qzipwriter_p.h, zconf.h, zconf.h.in и zlib.h). Все очень хорошо работает под Linuxом, а в Windows приходится в заголовочных qzip...h заменять Q_GUI_EXPORT на Q_DECL_EXPORT.
Полчаса я потратил на изучение qglobal.h, но так и не понял, почему под виндами работает Q_DECL_IMPORT вместо Q_DECL_EXPORT. Может, нужно какое-нибудь макро определить? Кто подскажет?