Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qt и ZipArchive 
:(
    Опции темы
null56
Дата 26.3.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



Хотел вот чего спросить....
1) С какими вообще архиваторами можно заставить работать qt или у него свои методы сжатия, через этот QZipReader?... просто у меня еще не 4,5 я не читал про них....
2) Можно ли с помощью этих зиперов сжимать и разживать информацию не из файла в файл, а осущесвлять это все в памяти.... запись на диск мне совсем не нужна?
Заранее благодарен
PM MAIL   Вверх
just_geek
Дата 26.3.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



Ну вообще-то есть функции qCompress & qUncompress (используют zlib).
PM MAIL   Вверх
null56
Дата 26.3.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



just_geek, спасибо..... ну и как жмет, хорошо?
PM MAIL   Вверх
just_geek
Дата 26.3.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



ну даже не знаю smile Обычный ж zlib. Он же используется в зипе. Только учти, если будешь использовать с другим софтом, то в qUncompress нужно добавить 4 байта в начало реальный размер данных. Поидее qCompress их тоже должен в начало писать.
PM MAIL   Вверх
SABROG
Дата 26.3.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(null56 @ 26.3.2009,  15:52)
Хотел вот чего спросить....
1) С какими вообще архиваторами можно заставить работать qt или у него свои методы сжатия, через этот QZipReader?... просто у меня еще не 4,5 я не читал про них....
2) Можно ли с помощью этих зиперов сжимать и разживать информацию не из файла в файл, а осущесвлять это все в памяти.... запись на диск мне совсем не нужна?
Заранее благодарен

QZipWriter/QZipReader работает на основе библиотеки zlib. Разница между zlib и zip только в заголовке с дополнительной информацией.

Если тебя не интересует загрузка и запись zip файлов, то изучи файлы:
qzip.cpp
qzipreader_p.h
qzipwriter_p.h

Там показано как работать с чистыми данными в оперативной памяти.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mosg
Дата 3.4.2009, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Цитата(ecspertiza @  19.3.2009,  13:42 Найти цитируемый пост)
QuaZIP пробовал тоже статично собирать, собирается нормально но ответ компилятора при сборке приложения тот же.


Ну как, получилось победить? На статике у меня тоже не собирается.
PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
ecspertiza
Дата 3.4.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



не-а не удалось остановился на динамике, причем если собирать статически пример который вместе с QuaZIP то всё нормально а в приложении не катит smile 


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
mosg
Дата 7.4.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Цитата(ecspertiza @  3.4.2009,  11:53 Найти цитируемый пост)
не-а не удалось остановился на динамике, причем если собирать статически пример который вместе с QuaZIP то всё нормально а в приложении не катит

А как с русским? Я пока тоже остановился на shared'е ... Исходники к своему проекту добавил - все работает, но есть две проблемы:
1) не понимает русские названия (точнее коверкает) - зы: каюсь, в код глубже ещё не заглядывал
2) при архивировании папти test, которая лежит в той же папке, что и сам EXE'шник, путь в архив пишется абсолютный! :( вместо относительного ...
PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
mosg
Дата 7.4.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Цитата(mosg @  7.4.2009,  15:33 Найти цитируемый пост)
1) не понимает русские названия (точнее коверкает) - зы: каюсь, в код глубже ещё не заглядывал

Исправилось: всего-то надо было после конструктора QuaZip добавить код:
Код
zip.setFileNameCodec("IBM866");

PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
mosg
Дата 9.4.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Цитата(ecspertiza @  3.4.2009,  11:53 Найти цитируемый пост)
не-а не удалось остановился на динамике, причем если собирать статически пример который вместе с QuaZIP то всё нормально а в приложении не катит

Я сделал немного хитро: просто добавил в свою программу исходники как QuaZIP'а, так и zlib'а - и всё статически пашет! smile

Всем советую!  smile 
PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
spyswamp
Дата 20.11.2012, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 1
Всего: 7



Пардон за поднятие некропоста, но кто-нибудь имел позитивный опыт использования QZipReader/QZipWriter? Из сорцов Qt 4.7.4 выдернул qzipreader_p.h, qzipwriter_p.h, qzip.cpp и нужный ему zlib из 3rdparty.
Для подключения к своему проекту сделал qzip.pri следующего содержания:

Код

INCLUDEPATH += $$PWD

SOURCES += \
    $$PWD/qzip.cpp

HEADERS +=\
    $$PWD/qzipreader_p.h \
    $$PWD/qzipwriter_p.h


Подключаю ее к *.pro файлу так:

Код

include(../../Common/qzip/qzip.pri)


Далее в некоем *.cpp пишу:

Код

#include "qzipreader_p.h"

....
QZipReader zipReader(res.data());
QByteArray data = zipReader.fileData(fileName);
if (data.isEmpty())
{
    error("YYY"); //TODO: QZipReader::status()
    return IODevicePtr();
}
....


Получаю следующую петрушку:

Код

./debug\XXXX.o:C:\projects\XXXX.cpp:410: undefined reference to `_imp___ZN10QZipReaderC1EP9QIODevice'
./debug\XXXX.o:C:\projects\XXXX.cpp:411: undefined reference to `_imp___ZNK10QZipReader8fileDataERK7QString'
./debug\XXXX.o:C:\projects\XXXX.cpp:424: undefined reference to `_imp___ZN10QZipReaderD1Ev'
./debug\XXXX.o:C:\projects\XXXX.cpp:424: undefined reference to `_imp___ZN10QZipReaderD1Ev'

collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\Exchange.exe] Error 1
mingw32-make: *** [debug] Error 2
15:55:20: The process "C:\projects\qtsdk\mingw\bin\mingw32-make.exe" exited with code 2.


Спрашивается, с какого перепугу, если qzip.cpp подключен через qzip.pri? Т.е. если тупо в *.pro добавить qzip.cpp, то ругается на повторное определение.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
bsa
Дата 20.11.2012, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



spyswamp, посмотри на предмет #ifdef/#endif внутри qzip.cpp.
PM   Вверх
spyswamp
Дата 20.11.2012, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 1
Всего: 7



bsa, да там, вроде, все предельно:

В qzip.cpp:

Код

#include <qglobal.h>

#ifndef QT_NO_TEXTODFWRITER

#include "qzipreader_p.h"
#include "qzipwriter_p.h"
#include <qdatetime.h>
#include <qplatformdefs.h>
#include <qendian.h>
#include <qdebug.h>
#include <qdir.h>

#include "zlib/zlib.h"

#if defined(Q_OS_WIN)
#  undef S_IFREG
#  define S_IFREG 0100000
#  ifndef S_IFDIR
#    define S_IFDIR 0040000
#  endif
#  ifndef S_ISDIR
#    define S_ISDIR(x) ((x) & S_IFDIR) > 0
#  endif
#  ifndef S_ISREG
#    define S_ISREG(x) ((x) & 0170000) == S_IFREG
#  endif
#  define S_IFLNK 020000
#  define S_ISLNK(x) ((x) & S_IFLNK) > 0
#  ifndef S_IRUSR
#    define S_IRUSR 0400
#  endif
#  ifndef S_IWUSR
#    define S_IWUSR 0200
#  endif
#  ifndef S_IXUSR
#    define S_IXUSR 0100
#  endif
#  define S_IRGRP 0040
#  define S_IWGRP 0020
#  define S_IXGRP 0010
#  define S_IROTH 0004
#  define S_IWOTH 0002
#  define S_IXOTH 0001
#endif

#if 0
#define ZDEBUG qDebug
#else
#define ZDEBUG if (0) qDebug
#endif

QT_BEGIN_NAMESPACE

...

QT_END_NAMESPACE

#endif // QT_NO_TEXTODFWRITER


В qzipreader_h.h:

Код

#ifndef QZIPREADER_H
#define QZIPREADER_H

#ifndef QT_NO_TEXTODFWRITER

#include <QtCore/qdatetime.h>
#include <QtCore/qfile.h>
#include <QtCore/qstring.h>

QT_BEGIN_NAMESPACE

...


QT_END_NAMESPACE

#endif // QT_NO_TEXTODFWRITER
#endif // QZIPREADER_H


Пробовал комментить QT_NO_TEXTODFWRITER и там, и там - толку ноль.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
spyswamp
Дата 21.11.2012, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 1
Всего: 7



Убрал qzip.pri, прописал INCLUDEPATH до qzip в проекте, заинклудил только qzip.cpp, clean/rebuild - заработало.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.