Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Архивация файлов с помощью zlib 
:(
    Опции темы
Демидрол
Дата 13.1.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброе время суток всем. У меня есть задача:необходимо с помощью билдера заахивировать некоторые файлы. Билдер версии 6.0, поэтому втроенного архиватора прямо в билдер не имею. Нашел в сети zlib.lib, описание про неё - вроде то, что мне нужно, но...при её подключении получаю ошибку:
[Linker Error] 'F:\PROJECT\ZLIBCOMPRESS\ZDLL.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
понимаю, что неподходит тип - билдеру нужен другой, т.е. нужно из OMF переделать в COFF, но как это сделать - не знаю.Помогите, пожалуйста. И если кто-нибудь занимался этой проблемой, то буду очень благодрен за прмер применения сей библиотеки. Заранее спасибо.
PM MAIL   Вверх
xvr
Дата 13.1.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Возьми сорцы с www.zlib.org и собери их под Builder, тогда и .lib будет правильный  smile 
PM MAIL   Вверх
Alexeis
Дата 13.1.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Демидрол, так есть же VCL овский TCompressionStream/TDecompressionStream

Код

#include "ZLib.hpp"

...........

  TFileStream *F = new TFileStream("some.txt", fmOpenRead);
  TCompressionStream *t = new TCompressionStream(Zlib::clMax, F);

..........


Добавлено через 1 минуту и 1 секунду
P.S. TCompressionStream/TDecompressionStream - это по сути обертка над zlib, потому формат тот же.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
xvr
Дата 13.1.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Alexeis @ 13.1.2009,  14:05)
Демидрол, так есть же VCL овский TCompressionStream/TDecompressionStream

Нету, у него BCB 6.0. 
ZLib.hpp появился только в BDS 200? (наверное 2006)

PM MAIL   Вверх
Демидрол
Дата 13.1.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(xvr @  13.1.2009,  15:47 Найти цитируемый пост)
Цитата(Alexeis @ 13.1.2009,  14:05)
Демидрол, так есть же VCL овский TCompressionStream/TDecompressionStream



Нету, у него BCB 6.0. 
ZLib.hpp появился только в BDS 200? (наверное 2006)


Дада))В этом-то и проблема)))
А ещё...мммм....я длл делать не умею, поэтому подскажите, если не сложно, как переделать zlib.dll в библиотеку, на которую билдер не будет ругацца....
PM MAIL   Вверх
orthrus
Дата 13.1.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



Значит на офф. сайте скачиваешь zlib-1.2.3.tar.gz, распаковываешь например на диск С:. Открываешь cmd.exe, заходишь в эту диру такой командой:
Код

cd C:\zlib-1.2.3\

дальше набираешь команду следующего содержания:
Код

make -f win32/Makefile.bor

должна произойти сборка либы


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Alexeis
Дата 13.1.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Демидрол @  13.1.2009,  15:19 Найти цитируемый пост)
Дада))В этом-то и проблема)))
А ещё...мммм....я длл делать не умею, поэтому подскажите, если не сложно, как переделать zlib.dll в библиотеку, на которую билдер не будет ругацца.... 

  Можно загрузить Dll динамически при помощи LoadLibrary

Добавлено @ 17:06
Кроме того есть тулза которая делает lib файл по имеющейся Dll. Implib кажется называется тулза.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Демидрол
Дата 13.1.2009, 17:39 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(orthrus @  13.1.2009,  17:01 Найти цитируемый пост)
Значит на офф. сайте скачиваешь zlib-1.2.3.tar.gz, распаковываешь например на диск С:. Открываешь cmd.exe, заходишь в эту диру такой командой:
Без подсветки
1:
cd C:\zlib-1.2.3\
дальше набираешь команду следующего содержания:
Без подсветки
1:
make -f win32/Makefile.bor

должна произойти сборка либы 


А где команды набирать?????
PM MAIL   Вверх
orthrus
Дата 13.1.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



Пуск->Выполнить->Ввести cmd и нажать ОК, откроется текстовая консоль там и вводить


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Демидрол
Дата 13.1.2009, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



orthrus, ОООООООО!!!!!!!!!!!!пасиба!!!!!!!Такие штуки научил делать........оооооооооооооо!!!!!!!!!!Пасиба!!!!!!!!!!
PM MAIL   Вверх
Dem_max
Дата 13.1.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

[Linker Error] 'F:\PROJECT\ZLIBCOMPRESS\ZDLL.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

Что за ошибка?, Как устранить?
ошибка при подключении *.lib файла, Linker Error
COFF- формат мелкомягких,
OMF - интеловский вроде но его использует борланд.



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Демидрол
Дата 19.1.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Поискал ещё в сети и нашл исходники, с помощью которых можно создавать zip-архивы.Но разобрался только, как архиировать отдельные файлы, а как запаковывать папки не понял, хотя распаковывается архив с папками нормально...Знаний, наверное, не хватает. Если кому-нибудь не сложно, помогите разобраться.Файлы добавлю к сообщени, если кому надо, а ниже приведу пример использования.

Архивация:
Код

       HZIP hz = CreateZip(PackName,0);
       ZipAdd(hz,"file1.rtf", FileName );
       //ZipAdd(hz,"file2.rtf", FileName);   // В АРХИВ МОЖНО УПАКОВЫВАТЬ НЕКОЛЬКО ФАЙЛОВ
       CloseZip(hz);


Разархивация:
Код

       HZIP hz = OpenZip(PackName,0);
       ZIPENTRY ze;
       for (int zi=0; zi<numitems; zi++)
       {
          ZIPENTRY ze; GetZipItem(hz,zi,&ze); // fetch individual details
          UnzipItem(hz, zi, ze.name);         // e.g. the item's name.
       }
       CloseZip(hz); 


Присоединённый файл ( Кол-во скачиваний: 52 )
Присоединённый файл  Compress.zip 81,59 Kb
PM MAIL   Вверх
Alexeis
Дата 19.1.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Демидрол, сам не пробовал, но по идее если указать относительные пути к файлам, т.е. "Folder\\file.ext" вместо имен "file1.rtf", то заархивируется как папка внутри архива.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
mrbrooks
Дата 19.1.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Демидрол, глянь здесь. Тут дельфяцких дел мастер реализовал то что тебе нужно.
PM MAIL   Вверх
Демидрол
Дата 19.1.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Alexeis, понятно, если указывать путик файлам, то они запакуются))Я не знаю, а можно ли запаковать папку таким образом, чтобы указать только её название, например, "Folder".....

Добавлено через 3 минуты и 38 секунд
mrbrooks, спасибо, но в том примере плотность сжатия невелика, 3% примерно, а мне надо именно сжимать файлы, то, что я нашол очень хорошо для этого, так как при тестировании дало хорошие результаты, только не могу понять, как папки архивироватьцеликом, а не отдельно по файлику архивировать содержимое.)))

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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