![]() |
|
|
![]()
|
|
| XavierElf |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Никак не могу понять как использовать эти функции для упаковки/распаковки файлов.
Делаю так: Упаковка:
Распаковка:
Упаковывать - вроде упаковывает, а вот распаковывать не хочет... пишет:
Кто посоветует, в какую сторону копать? --------------------
Даешь открытые исходники! |
||||||
|
|||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
||||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Точно... Уж как только не бился - всё время выдаёт ошибку...
--------------------
Даешь открытые исходники! |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Так... А где у тебя код, привязывающий outStream к outFile?
|
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
тут.
--------------------
Даешь открытые исходники! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Файл находится в той же директории, что и программа ?
Вызови метод size() у QByteArray и сравни совпадает ли возвращаемое количество байт с количеством байт в файле. |
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Размеры идентичны... Уже не знаю в какую сторону копать
--------------------
Даешь открытые исходники! |
|||
|
||||
| BlackWolf1980 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.6.2008 Репутация: нет Всего: нет |
сам возился, получалось так, что под виндой работало, под Ubuntu нет. решил так:
Запись:
Чтение:
|
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Это не методы. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Это глобальные функции, которые были помещены в модуль QByteArray. При сжатии данных формируется 4х байтовый заголовок, в котором содержится количество не сжатых байтов, т.е. то, что мы должны получить после распаковки.
Функция qUncompress проверяет этот заголовок. Какая архитектура у процессора ? Little-Endian, Big-Endian ? На обычных тачках, которые x86 формат записи байтов - Little-Endian (задом наперед). Qt же записывает заголовок в формате Big-Endian (как видим так и пишем). Отсюда может возникнуть косяк с распаковкой данных на компьютерах с разными процессорами. Хотя судя по FAQ'у zlib'a он пашет на всех процах. С другой стороны Qt сам передает количество ожидаемых байт:
Если копать дальше, то Z_DATA_ERROR возникает тут:
Это сообщение отредактировал(а) SABROG - 16.6.2008, 11:29 |
||||
|
|||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Насчёт методов - я оговорился. А вот по поводу моей проблемы конкретного решения я так и не услышал. У меня стоит Kubuntu 8.04 x86_64 и Windows XP x32. Ни там, ни там не получается сжать, а потом распаковать файл. Если можно, хотелось бы глянуть, как это правильно реализовать. Кто-нибудь может показать полностью рабочий код, который позволяет сжать файл, а потом распаковать его?
--------------------
Даешь открытые исходники! |
|||
|
||||
| BlackWolf1980 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.6.2008 Репутация: нет Всего: нет |
смотри выше, я тебе привел реальный код, могу весь класс скинуть. проверял как под Ubuntu 8.04 так и под Win XP |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Вот накотал без проверок и прочей мишуры, чтобы легче было разбираться, все работает на винде Win2000.
Присоединённый файл ( Кол-во скачиваний: 79 )
CompressDecompress.zip 1,91 Kb |
|||
|
||||
| XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
2 BlackWolf1980, спасибо, но мне нужно сжимать бинарные файлы в основном...
2 SABROG, ваш пример выдает тоже самое... что под виндой, что под линуксом...
не пойму, что не так... --------------------
Даешь открытые исходники! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Может дело в файле ? Больше 4294967295 байт (4 гигов) не сжать.
Кстати, не знаю почему, но файл размером всего в 60 мегабайт сжимался около минуты. Хотя и винрар был не особо быстр - 40 секунд. Это сообщение отредактировал(а) SABROG - 16.6.2008, 17:41 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |