![]() |
|
|
![]()
|
|
| Mr_Devil |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Есть приложение, которое экспортирует свои данные в XML-файл, но предварительно сжимает его:
Распаковывает она все это дело обратно таким образом:
Каким образом можно самостоятельно распаковать файл не имея фреймворка Qt? Архиваторы его не распознают, видимо, не хватает заголовков. В папке с программой есть библиотека QtCore4.dll v4.7, в ней есть функции compress и uncompress. Попытки воспользоваться этими функциями на Delphi пока ни к чему не привели, т.к. реализации класса QByteArray в Delphi нет. Подскажите, пожалуйста, как можно решить проблему? Может есть другие библиотеки с заголовками для Delphi, которые можно использовать? З.Ы.: C++ не владею, фреймворка нет. |
||||
|
|||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Делаешь dll-ку на Си++, использующую Qt и экспортирующую 2 функции
Первая будет делать следующее
Вторая:
Как в дельфи подключить обычную dll-ку и импортировать оттуда функции не знаю, но, думаю, это - несложно Это сообщение отредактировал(а) borisbn - 18.3.2012, 10:06 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
таким. по всей видимости, это экспорт функций zlib. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
ага. единственно что - они добавляют к данным 4 байта - размер распакованных данных. если их отрезать, то можно пользоваться zlib-ом. я уже так делал. работатет -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Sahab |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 1.9.2009 Репутация: 2 Всего: 3 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Mr_Devil |
|
||||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Идея хорошая, но даже если я найду компилятор, у меня нет самого фреймворка, где объявлены все эти классы и функции (QByteArray, qUncompress). К тому же в C++ я, можно сказать, мало что понимаю
Не сложно, я хотел использовать напрямую библиотеку QtCore4.dll, но не знаю какие параметры передавать, в каком порядке и каких типов. Может быть можно что-то к этому архиву дописать, чтобы можно было открыть каким-нибудь архиватором?
Не совсем понял что там написано. Это реализация qUncompress? В исходном тексте (в моем первом сообщении) передается только 1 параметр. Почему там 2 параметра и чем это может помочь? Предлагаете самостоятельно сделать реализацию всех используемых классов на Делфи?
Есть где почитать, что им можно передавать и как забирать?
Если воспользоваться zlib'ом, можно будет извлечь данные, не зная исходного размера? Это сообщение отредактировал(а) Mr_Devil - 19.3.2012, 00:53 |
||||||||||||
|
|||||||||||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
http://zlib.net/manual.html
можно. отрезаешь первые 4 байта и отдаёшь остаток в ф-цию распаковки zlib'а. единственное что - при смене библиотеки Qt они могут сменить формат и такой рукоблудный qUncompress работать не будет. так что лучше воспользуйся способом из моего первого сообщения -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Mr_Devil |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Спасибо за помощь, все получилось. Отрезал 4 байта и распаковал ZLib'ом. Библиотека Qt не поменяется, т.к. приложение я обновлять не собираюсь, мне нужно было только разобрать его формат экспорта, чтобы слепить для него файл импорта со своими данными. Теперь с библиотекой ZLib автоматически решился второй вопрос "Чем запаковать обратно?" Скомпилированную библитеку ZLib взял здесь. Это ссылка с сайта ZLib. Обертку библиотеки для Delphi взял тут. Эту ссылку я тоже нашел на сайте ZLib. получился такой вот код:
З.Ы.: Есть такая утилита WinHEX, там в меню Edit -> Convert есть вариант конвертации "zlib inflate". Отрезаем у файла первые 4 байта, потом делаем конвертацию и получаем такой же результат как и у ZLib'а З.З.Ы.: К сожалению, у меня не хватает постов для плюсования тех, кто помогал Это сообщение отредактировал(а) Mr_Devil - 19.3.2012, 16:39 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
||||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, 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. |