| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Создание архива (ручками) |
| Автор: Marlin 22.2.2006, 09:24 |
| Мне необходимо запоковать каталог с файлами и подкаталогами програмным способом. Я для этого использовал компонент FlexCompress for Delphi, мне он вполне подошел. Но возникло две проблемы 1) FlexCompress for Delphi - это триал версия и как его зарегестрировать понятия не имею. Он он выводит надоедливое сообщение при запуске моей программы. 2) Т.к. работа уходит на олимпиаду, мне сказали, что сторонними компонентами пользоваться нельзя. smile вот тут я попал smile Ребята помогите пожалуйста, времени остается в обрез, я не успею написать встроенный архиватор. И весь мой 2-х месячный труд уйдет коту под хвост. Дело в том, что я хочу использовать алгоритм Халффмана для этого. Я понял суть, но не могу применить на практике. Небольшая путаница с бинарными деревьями. Но самое главное это как в архив запихать весь каталог, который нужно запаковать с его файлами и подкаталогами. Один файл то можно, а вот каталог целый smile Может кто уже делал что-то подобное? помогите если кто, что знает? smile |
| Автор: Guedda 22.2.2006, 09:26 |
| 1) Берешь, идешь на официальный сайт, там платишь денешку, и тебе дают ключ. Ты его устанавливаешь, и все прекрасно. А что, нельзя обойти как-нить судей и подкрепить WinRar, и с ключами его фиксить? |
| Автор: Marlin 22.2.2006, 09:33 |
| Ты имеешь ввиду, взять dll и в модуле подгружать от туда функции и процедуры. Если так, я также должен предоставить и исходник DLL. Как быть? |
| Автор: Guedda 22.2.2006, 09:40 |
| Тогда ищи материал по сжатию данных, и пиши свой компонент для сжатия. |
| Автор: Marlin 22.2.2006, 09:43 |
| Если бы был такой нормальный материал, я бы вопрос в форуме не стал поднимать. Есть немного материала, но объяснение только в теории, много непонятного, что связано с кодингом Добавлено @ 09:45 Граждане программеры, помогите собрату, может кто, где, хоть как-то сталкивался. Очень бы хотелось посмотреть исходник |
| Автор: Romikgy 22.2.2006, 10:17 |
| не знаю что это за компонент, но чего не воспользоватся компонентами на основе Zip? |
| Автор: Snowy 22.2.2006, 10:28 |
| Если не использовать сторонние компоненты, то тебе прямая дорога к ZLib. http://forum.vingrad.ru/index.php?showtopic=80197&view=findpost&p=620614 или посиск: http://forum.vingrad.ru/index.php?act=Search&CODE=show&searchid=f9fb6a15fb62919dadbbe4a861fdd141&search_in=posts&result_type=topics&flag=search&debug=&highlite=zlib&skipped= |
| Автор: Marlin 22.2.2006, 11:29 |
| Куда жмеш при заходе в Delphi: Общие? И какой браузер? Это у меня прокси сервер неправильно работал, там стоял слишком большой кэш. Но даже при установке кэше в 1 мб при переходе на винград в форум "общие вопросы" он почему-то хочет закачать эту ссылку, а браузер у меня MOZILA Firefox |
| Автор: Snowy 22.2.2006, 11:33 |
| Давай определимся с функционалом. Итак. Тебе нужно запаковать каталог с файлами и подкаталогами. Без использования сторонних компонентов. Хорошо. Это легко. Только нужно определиться с распаковкой. Нужно распаковывать: восстановить оригинал - распаковать все файлы, восстановить каталоги. или иметь возможность распаковки каждого отдельного файла? Требуется ли возможность получения списка файлов архива? Можно довольно быстро нарисовать быстрый и легкий архиватор. Если нужна только первая возможность, то уровень компрессии будет на 5-10% лучше ZIP. Если хочешь больше, то уровень будет на уровне ZIP. Можно увеличить, но за счет времени распаковки. Добавлено @ 11:35 Если только первый вариант - могу набросать код за полчаса. |
| Автор: Marlin 22.2.2006, 11:41 |
| Snowy спасибо за подсказку. Я сам только, что набрел на такую библиотеку. Прочитал поверхностно т.к. на работе некогда, но везде описан пример с одним файлом, может ты подскажешь как можно послать в упаковку весь каталог с его вложенными файлами и подкаталогами и все это упаковать в один. И соответственно наоборот. Это возможно? А то с одним файлом я бы и метод Халффмана применил. Вот проблема! Добавлено @ 11:48 Давай определимся с функционалом. Итак. Тебе нужно запаковать каталог с файлами и подкаталогами. Без использования сторонних компонентов. - именно так Хорошо. Это легко. Только нужно определиться с распаковкой. Нужно распаковывать: восстановить оригинал - распаковать все файлы, восстановить каталоги. - Именно больше ничего и не надо или иметь возможность распаковки каждого отдельного файла? - нет кучу запоковал, кучу распоковал Требуется ли возможность получения списка файлов архива? - нет не требуется Можно довольно быстро нарисовать быстрый и легкий архиватор. - Это было бы просто супер Если нужна только первая возможность, то уровень компрессии будет на 5-10% лучше ZIP. Если хочешь больше, то уровень будет на уровне ZIP. Можно увеличить, но за счет времени распаковки. Добавлено @ 11:35 Если только первый вариант - могу набросать код за полчаса. - Значит ты будешь лучшим, кого я только знал в этой среде программирования Кстати ты сколько уже в делфи и вообще в программировании |
| Автор: Snowy 22.2.2006, 13:41 | ||||
Готово. Держи:
Пример использования:
Добавлено @ 13:48 Для анализа зажал каталог с exe, bpl, dcu, bmp общим весом 8.5Mb. Результаты компрессии: ZIP: 3430Kb VGZ: 3337Kb В принципе немного - всего 3% выигрыш. Зато минимум кода - минимум размера. Скорость высокая. Добавлено @ 13:50 Лет 15. |
| Автор: Marlin 22.2.2006, 14:07 |
| Ребята спасибо вам огромное! Snowy ну ты ас. Я еще в дет сад ходил, когда ты в делфи начал разбирать |
| Автор: Snowy 22.2.2006, 14:13 | ||
До этого Pascal, Asm. А до этого Basic, C++. Всегда пожалуйста. Заходи еще. |
| Автор: Snowy 22.2.2006, 14:33 | ||
| Чуть доработал модуль. Теперь можно паковать без ступора программы и сделать визуализацию. Пример с визуализацией вот: (на форме 2 кнопки и TAnimate с Visible = false).
Сам модуль повторно не выкладываю - исправил оригинальном посте. |
| Автор: Marlin 22.2.2006, 16:21 |
| Еще раз спасибо! Зайду обязательно только с 1с 8.0 разделаюсь |
| Автор: vood 25.2.2006, 10:24 |
| А мне кажеться Zlib лучше |
| Автор: Snowy 25.2.2006, 13:09 |
| Чем ZLib? Ты это к чему сказал? |
| Автор: Mr.Floppy 29.9.2007, 11:11 |
| Имена файлов ограничены 255 байтами - маловато, потому что может быть много вложенных папок. Лучше под длину имени файла отводить 2 байта. P.S. Кстати, если использовать отрицательные значения int64 от -2^63 как положительные, то в архиве можно будет хранить файлы до 16, вместо всего лишь 8 эксабайт Добавлено: глупость сказал, NTFS больше-то и не поддерживает... |