Название: Нужен простой способ работы с каким-либо архиватором Отправлено: DpoHro от Май 16, 2009, 21:31 На сервер в базу складываются html страницы с картинками, файлами стилей и пр. запакованные архиватором (каким?), клиент качает и распаковывает у себя.
Нужно сделать распаковку таким образом, чтобы пользователь никак ей не смог помешать - это про консольные окна (если запускать архиватор через QProcess), а может можно запускать не показывая окна? Тогда еще необходимо дожидаться завершения распаковки. Вобщем нужен совет: 1) Как решить эту проблему наиболее простым способом 2) Как решить это правильно/красиво. )) Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: ритт от Май 16, 2009, 22:09 quazip?
Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: DpoHro от Май 16, 2009, 22:13 чтото я его скомпилить не могу ((
где zlib лежит указал Как вообще этот проект скомпилить в виндах? Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: ритт от Май 16, 2009, 23:53 qmake && make
слышал, под студией бывает проблемно собрать, но это легко лечится... Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: DpoHro от Май 17, 2009, 00:53 qmake && make Это из студийной командной строки надо понимать?слышал, под студией бывает проблемно собрать, но это легко лечится... На qmake - ничего не пишет, make выдает: Цитировать MAKE Version 5.2 Copyright (c) 1987, 1998 Inprise Corp. Fatal makefile 187: No terminator specified for in-line file operator Если nmake то: Цитировать cd quazip\ && "C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe" -f Makefile "C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe" -f Makefile.Debug cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -W3 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_WINDOWS -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\4.4.3\include\QtCore" -I"c:\Qt\4.4.3\include\QtCore" -I"c:\Qt\4.4.3\include\QtGui" -I"c:\Qt\4.4.3\include\QtGui" -I"c:\Qt\4.4.3\include" -I"." -I"debug" -I"\src\3rdparty\zlib" -I"c:\Qt\4.4.3\include\ActiveQt" -I"debug" -I".\GeneratedFiles" -I"c:\Qt\4.4.3\mkspecs\default" -Fodebug\ @C:\DOCUME~1\9335~1\LOCALS~1\Temp\nm1CFE.tmp ioapi.c .\ioapi.c(74) : error C2275: 'FILE' : illegal use of this type as an expression C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\stdio.h(69) : see declaration of 'FILE' .\ioapi.c(74) : error C2065: 'file' : undeclared identifier .\ioapi.c(75) : error C2143: syntax error : missing ';' before 'const' .\ioapi.c(77) : error C2065: 'mode_fopen' : undeclared identifier .\ioapi.c(77) : warning C4047: '=' : 'int' differs in levels of indirection from 'char [3]' .\ioapi.c(80) : error C2065: 'mode_fopen' : undeclared identifier .\ioapi.c(80) : warning C4047: '=' : 'int' differs in levels of indirection from 'char [4]' .\ioapi.c(83) : error C2065: 'mode_fopen' : undeclared identifier .\ioapi.c(83) : warning C4047: '=' : 'int' differs in levels of indirection from 'char [3]' .\ioapi.c(85) : error C2065: 'mode_fopen' : undeclared identifier .\ioapi.c(85) : warning C4047: '!=' : 'int' differs in levels of indirection from 'void *' .\ioapi.c(86) : error C2065: 'file' : undeclared identifier .\ioapi.c(86) : error C2065: 'mode_fopen' : undeclared identifier .\ioapi.c(86) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int' .\ioapi.c(86) : warning C4024: 'fopen' : different types for formal and actual parameter 2 .\ioapi.c(86) : warning C4047: '=' : 'int' differs in levels of indirection from 'FILE *' .\ioapi.c(87) : error C2065: 'file' : undeclared identifier .\ioapi.c(87) : warning C4047: 'return' : 'voidpf' differs in levels of indirection from 'int' .\ioapi.c(91) : error C2061: syntax error : identifier 'fread_file_func' .\ioapi.c(91) : error C2059: syntax error : ';' .\ioapi.c(91) : error C2143: syntax error : missing ')' before ',' .\ioapi.c(91) : error C2059: syntax error : ')' .\ioapi.c(92) : error C2146: syntax error : missing ';' before identifier 'voidpf' .\ioapi.c(92) : error C2061: syntax error : identifier 'opaque' .\ioapi.c(92) : error C2059: syntax error : ';' .\ioapi.c(93) : error C2040: 'stream' : 'voidpf' differs in levels of indirection from 'int' .\ioapi.c(94) : error C2040: 'buf' : 'void *' differs in levels of indirection from 'int' .\ioapi.c(95) : warning C4142: benign redefinition of type .\ioapi.c(96) : error C2449: found '{' at file scope (missing function header?) .\ioapi.c(101) : error C2059: syntax error : '}' .\ioapi.c(105) : error C2040: 'stream' : 'voidpf' differs in levels of indirection from 'int' .\ioapi.c(106) : error C2040: 'buf' : 'const void *' differs in levels of indirection from 'int' .\ioapi.c(107) : warning C4142: benign redefinition of type .\ioapi.c(108) : error C2449: found '{' at file scope (missing function header?) .\ioapi.c(113) : error C2059: syntax error : '}' .\ioapi.c(116) : error C2040: 'stream' : 'voidpf' differs in levels of indirection from 'int' .\ioapi.c(117) : error C2449: found '{' at file scope (missing function header?) .\ioapi.c(122) : error C2059: syntax error : '}' .\ioapi.c(125) : error C2040: 'stream' : 'voidpf' differs in levels of indirection from 'int' .\ioapi.c(128) : error C2449: found '{' at file scope (missing function header?) .\ioapi.c(148) : error C2059: syntax error : '}' .\ioapi.c(151) : error C2040: 'stream' : 'voidpf' differs in levels of indirection from 'int' .\ioapi.c(152) : error C2449: found '{' at file scope (missing function header?) .\ioapi.c(157) : error C2059: syntax error : '}' .\ioapi.c(160) : error C2040: 'stream' : 'voidpf' differs in levels of indirection from 'int' .\ioapi.c(161) : error C2449: found '{' at file scope (missing function header?) .\ioapi.c(166) : error C2059: syntax error : '}' .\ioapi.c(169) : error C2449: found '{' at file scope (missing function header?) .\ioapi.c(178) : error C2059: syntax error : '}' unzip.c c:\quazip-0.2.3\quazip\crypt.h(38) : error C2143: syntax error : missing ';' before 'type' c:\quazip-0.2.3\quazip\crypt.h(42) : error C2065: 'temp' : undeclared identifier c:\quazip-0.2.3\quazip\crypt.h(43) : error C2065: 'temp' : undeclared identifier c:\quazip-0.2.3\quazip\crypt.h(43) : error C2065: 'temp' : undeclared identifier zip.c c:\quazip-0.2.3\quazip\crypt.h(38) : error C2143: syntax error : missing ';' before 'type' c:\quazip-0.2.3\quazip\crypt.h(42) : error C2065: 'temp' : undeclared identifier c:\quazip-0.2.3\quazip\crypt.h(43) : error C2065: 'temp' : undeclared identifier c:\quazip-0.2.3\quazip\crypt.h(43) : error C2065: 'temp' : undeclared identifier .\zip.c(324) : error C2275: 'uLong' : illegal use of this type as an expression c:\quazip-0.2.3\quazip\zconf.h(264) : see declaration of 'uLong' .\zip.c(324) : error C2146: syntax error : missing ';' before identifier 'year' .\zip.c(324) : error C2065: 'year' : undeclared identifier .\zip.c(325) : error C2065: 'year' : undeclared identifier .\zip.c(326) : error C2065: 'year' : undeclared identifier .\zip.c(327) : error C2065: 'year' : undeclared identifier .\zip.c(328) : error C2065: 'year' : undeclared identifier .\zip.c(330) : error C2065: 'year' : undeclared identifier Generating Code... Не собирал я ранее такие проекты, уж звиняйте, если кто знает как собирать эту вещицу, напишите пошагам если не трудно. Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: spectre71 от Май 20, 2009, 09:49 чтото я его скомпилить не могу (( где zlib лежит указал Как вообще этот проект скомпилить в виндах? А почему не воспользоваться QByteArray qCompress ( const QByteArray & data, int compressionLevel = -1 ) QByteArray qCompress ( const uchar * data, int nbytes, int compressionLevel = -1 ) QByteArray qUncompress ( const QByteArray & data ) QByteArray qUncompress ( const uchar * data, int nbytes ) Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: DpoHro от Май 20, 2009, 13:02 У меня может быть на каждый документ по несколько файлов, могут быть и папки в которых также могут быть файлы.
Сдается мне это долго делать придется. Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: ритт от Май 20, 2009, 17:49 советую забыть про quazip. и извиняюсь, что посоветовал посмотреть в его сторону.
сам я на него не смотрел, а только использовал для примитивных целей (распаковка архива в папку), что немногим менее примитивно, чем его (квазипа) примеры... на днях потребовалась навигация по структуре, возможность распаковывать отдельные файлы, допаковывать новые и т.п. - углубился в квазип и был шокирован дерьмовостью реализации. качественный пример гомнокода! сейчас использую немного модифицированный qzip из Qt4.5 и пока что доволен - почти всем моим требованиям пока удовлетворяет и написан качественно. Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: DpoHro от Май 21, 2009, 10:51 qzip с версии 4.5? Или это из сорсов взято?
Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: ритт от Май 21, 2009, 19:18 в 4.5 появилась поддержка одф.
src/gui/text/qzip* - эти три файлика нужно скопировать в свой проект и слегка почистить (убрать некоторые кутэшные макросы). затем можно использовать. по принципу похоже на квазип (т.к. зип вообще даёт довольно узкий функционал), но работать с этими классами гораздо удобнее! Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: DpoHro от Май 21, 2009, 20:21 Я правильно понял, что с его помощью можно распаковывать zip-архивы, в которых могут содержаться вложенные папки и файлы в них произвольного уровня вложенности?
Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: ритт от Май 21, 2009, 21:04 да
Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: DpoHro от Май 21, 2009, 21:08 Буду разбираться тогда с ним,
Спасибо! Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: kirill от Май 22, 2009, 05:32 http://osdab.googlecode.com/files/OSDaB-Zip-20080907.tar.bz2
Description Meet a couple of pure-Qt/C++ classes capable of handling PKZIP 2.0 compatible zip archives. This is not a "port" of some other existing implementation, everything has been written from scratch (althought some code was actually inspired by existing public domain projects) and it's all pure C++/Qt. Please note that this is not a complete stand-alone library, it's just a bunch of classes. You will have to add them to your project and modify them to best fit your needs. Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: ритт от Май 22, 2009, 05:46 кстати, да, совсем забыл про OSDaB :)
не такой удобный, как qzip, и по большей части заточен под венду, но в частных случаях имеет свои преимущества...скрестить бы их :мечтательно: Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: lyalya от Февраль 03, 2010, 13:41 а как посмотреть версию qt?
мне необходимо использовать qzip, а я сколько не копаюсь, нет у меня никаких файлов qzip... хотя в конфиге есть VERSION 4.5.0. Не то, да, смотрю? Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: kuzulis от Февраль 03, 2010, 14:09 см. qVersion()
см. QT_VERSION Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: BlackTass от Февраль 04, 2010, 08:46 дак нужен архиватор или версия куте?
если нужно сжаие данных, то методы qCompress() если версия, то уже сказали выше Название: Re: Нужен простой способ работы с каким-либо архиватором Отправлено: lyalya от Февраль 04, 2010, 11:41 нет, хотелось именно qzip...наверное, в 4.5.0 не было еще этого... в 4.5.3 все нормально нашлось))
|