Класс-обёртка для zlib на базе оригинального Си-кода

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Nik » 13.12.2010 01:24:30

Наконец-то закончил (не без помощи здешних старожилов :) ) портирование класса-обёртки для zlib. Лет 5 назад собирал его из исходников JEDI и ещё каких-то левых прог (точно уже не помню), а для Lazarus-версии взял ещё и delphi.zlib. Всё это тщательно перемешал и - вуаля :)

Пользоваться предельно просто, так что даже пример собирать не стал (см. описание функций в zlibfunc.pas). Самые ленивые могут взять самые простые (в использовании) функции:

Код: Выделить всё
CompressFile(SourceFile: string, PackedFile: string);

DecompressFile(PackedFile: string, UnPackedFile: string);


Код ещё не до конца прочищен от Delphi-наследия, местами могут встречаться неиспользуемые куски. Делал для своих нужд, так что желающие могут смело модифицировать (если не лень - черкните в этой теме, чего и зачем меняли, что удаляли). А вообще - пользуйтесь, кому пригодится :)
Вложения
lazarus-zlib-1.2.5.rar
(50.16 КБ) Скачиваний: 479
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 569
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Иван Шихалев » 13.12.2010 02:32:27

Почему бы не выложить, например, на GitHub?
Аватара пользователя
Иван Шихалев
постоялец
 
Сообщения: 440
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Nik » 13.12.2010 11:14:41

Если честно, не доводилось иметь дела с SVN и иже с ней. Появится время - разберусь и сделаю. Кстати, не подскажете мануал для совсем начинающих по этому делу?
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 569
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Maxizar » 13.12.2010 12:46:42

Я сам как то задался вопросом: "А что же такое SVN?". Я вообще то люблю GUI и не очень Консоль, хотя приходится иногда возится, скажем когда делаешь свою сборку винды и т.п. Из-за чего я искал именно Gui-ый клиент SVN. Так вот он для винды: TortoiseSVN. Вы скажите и Че.. Так на странице закачки Скачать. Есть мануал на русском языке, в котором подробно для таких как я написано что такое SVN, его задачи и при этом как бы в контексте идет описание работы клиента. Так что очень советую. Благодоря этому хелпу я смог скачать так называемый Lazarus SVN :).
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Nik » 13.12.2010 14:02:30

Что такое SVN я представляю, и TortoiseSVN пользуюсь для закачки того же Lazarus (и некоторых компонентов для него). Но вот созданием собственных репозиториев до сиз пор заниматься не приходилось.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 569
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Иван Шихалев » 13.12.2010 16:21:43

Изрядно рекомендую пользоваться чем-то вроде Git, а не чем-то вроде SVN. Особенно, если навыков в SVN мало и, соответственно, мышление в эту сторону еще не повернуто.

Добавлено спустя 2 минуты 58 секунд:
http://diseaz.github.com/gitmagic/
Аватара пользователя
Иван Шихалев
постоялец
 
Сообщения: 440
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение and » 13.12.2010 17:02:05

Иван Шихалев писал(а):Изрядно рекомендую пользоваться чем-то вроде Git, а не чем-то вроде SVN. Особенно, если навыков в SVN мало и, соответственно, мышление в эту сторону еще не повернуто.
А можно узнать, почему? У меня как раз "мышление ещё не повёрнуто", но поворачивается: UIB, FBDataset, да и сам Lazarus...
P.S. Пользуюсь TortoiseSVN. Про существование TortoiseGit прочитал.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Иван Шихалев » 13.12.2010 17:35:50

Собственно почему распределенные, а не централизованные:

1. Распределенность — полностью рабочий репозиторий находится у разработчиков. Случись что с сервером — всегда можно восстановить.
2. Можно полноценно использовать контроль версий без доступа к серверу, а потом легко и быстро синхронизировать.
3. Управление ведется на уровне коммитов, а не ревизий. Т.е. не возникают конфликты без лишней на то нужды. Если два разработчика параллельно что-то правят, конфликт (и потребность в его ручном разрешении) возникнет, только если они реально пересекутся по участкам кода.
4. Соответственно, легко и непринужденно можно вести ветвления, а затем их сливать в одно. Разработчик может как угодно экспериментировать в своей ветке, а в мейнстрим затем отправится готовый вариант, или даже только часть изменений (см. п. 2). При этом ветка разработчика может быть строго локальна, может быть даже не одна и т.д. И тем не менее у него будет полный функционал. Например, я регулярно ковыряюсь в исходниках FPC, при этом могу легко переключаться между своими экспериментами и главной веткой, добавлять изменения из главной ветки в свою локальную и т.д.

Собственно, преимущества Git:

5. Работа с содержимым, а не с файлами — если мы файл переименум, или перенесем большой кусок кода из одного модуля в другой, это будет корректно отслежено.
6. Поиск ошибок при помощи git bissect

Добавлено спустя 2 минуты 5 секунд:
Еще есть плюс GitHub по сравнению с SourceForge — все делается гораздо быстрее и удобнее. Хотя, возможно, мои данные и устарели, но раньше, например, проект на SF должен был сначала дождаться утверждения...

Добавлено спустя 1 минуту 37 секунд:
Вот только пользоваться TortoiseGit я бы не советовал — это один из тех случаев, когда командная строка удобнее на порядки.

Добавлено спустя 10 минут 55 секунд:
Еще один момент добавлю: с помощью Git можно легко и удобно управлять локальными мелкими проектами (а потом при необходимости быстро залить их на тот же GitHub). Тогда как для SVN пришлось бы поднимать собственный сервер. Лично мне как-то проще пользоваться для одинаковых задач одинаковым инструментом, независимо от того, мой ли это проект, и где он находится.
Аватара пользователя
Иван Шихалев
постоялец
 
Сообщения: 440
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение and » 13.12.2010 19:49:44

2Иван Шихалев: Спасибо! Действительно, стОит обдумывания.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение dionic » 17.02.2011 11:45:01

Спасибо автору!!!!
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение BadBoyAlex » 26.02.2011 14:33:12

Спасибо большое... вот только бы ещё и пароль на архив ставить умел бы...
Аватара пользователя
BadBoyAlex
постоялец
 
Сообщения: 113
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Nik » 26.02.2011 17:24:10

BadBoyAlex писал(а):Спасибо большое... вот только бы ещё и пароль на архив ставить умел бы...

Zlib исходно не умеет шифровать архивы. Если вам нужно защитить содержимое архива, можете попробовать модифицировать код, добавив в момент сжатия потока сдвиг (это самый простой вариант).
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 569
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Polugut » 01.03.2011 13:51:23

Можно справку как применять? Лучше пример, в виде проекта.
Я скопировал файлы из архива в папку с проектом, открыл в Лазарусе, присоединил к проекту, в uses приписал все три юнита. При компиляции ошибка:
Код: Выделить всё
/usr/bin/ld: warning: /home/pol/cod/zlib/link.res contains output sections; did you forget -T?
//home/pol/cod/zlib/Zlib/adler32.o: file not recognized: File format not recognized
project1.lpr(20,1) Error: Error while linking
project1.lpr(20,1) Fatal: There were 1 errors compiling module, stopping

Поискал в инете значения этих сообщений, не нашел.
В /home/pol/cod/zlib/link.res нет секции output, только input

ОС - Убунту 10.10
FPC - 2.4.0
Lazarus - 0.9.28.2
Что не так? Или только Windows only ? Или я что неправильно делаю? Или надо паскаль с лазарусом обновлять? Меня и эти версии из репозитория устраивают полностью, но если так, то попробую.
Polugut
новенький
 
Сообщения: 19
Зарегистрирован: 25.02.2010 23:50:29

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение Nik » 01.03.2011 15:50:59

Что не так? Или только Windows only ? Или я что неправильно делаю?

Подозреваю, что для корректной компиляции под Linux придётся пересобрать obj-файлы Zlib nix-версией gcc. Сам под Linux не тестировал пока.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 569
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Класс-обёртка для zlib на базе оригинального Си-кода

Сообщение dionic » 18.04.2011 12:06:12

Народ всем привет!

Тут товарищ Nik выложил класса-обёртку для zlib, однако объектные файлы для работы этой обёртки были скомпилированы gcc под Windows, а под linux соответственно нет. Я попробывал их сделать под Linux: скачал последнюю версию Zlib, сделал всё как написано в readme, получил так сказать новые obj-файлы ( сначала правда не знал откуда берётся файл match.o, но потом ещё порывшись в доках нашёл как всё собирать ). Однако успехом моя затея пока не увенчалась :( . На новые скомпилированные файлы выдаёт ошибку:
Код: Выделить всё
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
/usr/lib/lazarus/0.9.30/components/Zlib/Zlib/adler32.o: In function `adler32_combine':
adler32.c:(.text+0x2c2): undefined reference to `__moddi3'
/usr/lib/lazarus/0.9.30/components/Zlib/Zlib/adler32.o: In function `adler32_combine64':
adler32.c:(.text+0x390): undefined reference to `__moddi3'
project1.lpr(19,1) Error: Error while linking


Может кто поможет чем? Подскажитк как устранить эту бяку???
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru