| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Работа с алгоритмом архивации LZMA |
| Автор: Georg97 18.5.2013, 02:20 |
| Отыскал в просторах интернета архив с реализацией LZMA алгоритма. Никак не получается прикрутить упаковку/распаковку файла к функциям этой библиотеки? Поделитесь пожалуйста своими соображениями или есть какая другая библиотека с работой одним файлом: сжатие-распаковка (модули лучше с ассемблерными вставками; можно в MemoryStream). Только работающая с большими файлами тоже! В интернете смотрел: только 7za.dll (SevenZipVCL) оказался рабочим, да и то с небольшими файлами и только упаковывает! Остальное - либо под консоль, либо вообще не работает!!! |
| Автор: northener 18.5.2013, 14:42 |
| Попробуйте http://rouse.drkb.ru/components.php |
| Автор: Georg97 18.5.2013, 14:48 | ||
Нет нужен не ZIP, а LZMA! Ну или 7-Zip, но для работы с одним файлом или простенький модуль, желательно с ассемблерными вставками, работающий с большим объемом файла... |
| Автор: northener 19.5.2013, 03:24 |
А почему это требование так важно, если от модуля требуется не только распапковка, но и запаковка? И зачем желательны "ассемблерные вставки"? Какое-то странное желание :( P.S. Семестр заканчивается. Скоро нужно сдавать курсовую. А "воз и ныне там"? |
| Автор: StranikS 19.5.2013, 13:13 |
| Вот пожалуйста, модуль для работы с библиотекой 7z.dll. В архиве: - сам модуль SevenZIP.pas, его надо прикрутить к программе в разделе uses; - последняя версия 7z.dll - взят мной из 7-zip 9.20, его нужно закинуть в папку с вашей программой - readme-файл с описанием. |
| Автор: StranikS 19.5.2013, 13:15 |
| И еще раз тот-же архив ЗЫ: Не понравился мне новый движок сайта... |
| Автор: Georg97 19.5.2013, 16:42 | ||||||
Спасибо конечно, но можно как-то без dll или свою хотя-бы написать (есть исходники у кого)? Я кстате немного разобрался с SevenZipVCL, только при архивации/извлечении файл сохраняется в текущую директорию с программой... - Просто мозгов не хватает переделать модуль, предназначенный для консольного приложения!
1. Говорю сразу - пишу для себя! 2. Я так понимаю что 7za.dll, что 7z.dll написаны на ассемблере? Почему говорю, что надо свою dll - потому, что при попытке распаковать файл с переименованным расширением, скажем: wav в 7z выскакивает диалог открытия файлов из этой dll и требует какой-то -VOLUME файл, после чего программа вылетает, а мне надо:
|
| Автор: StranikS 19.5.2013, 20:45 | ||
Самому? Зачем изобретать велосипед? Если не хотите чтоб с экзешником таскались лишние файлы, то можно dll защить в ресурс и прикомпилить к exe-файлу, а затем извлекать из ресурса в TEMP и пользоваться ей, когда прога запущена. |
| Автор: northener 20.5.2013, 00:25 |
Ну пусть так. Но всё-таки почему ? С чего вы это взяли? |
| Автор: Georg97 20.5.2013, 01:35 | ||
А у вас есть pas - файл? Поделитесь! |
| Автор: northener 20.5.2013, 02:00 |
Даже если бы у меня был тот "pas - файл" , я не стал бы делиться с первым встречным! |
| Автор: david_yu 20.5.2013, 06:01 |
| есть http://sageshome.net/oss/paszlib-sg.php Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id5196bb626ccc191c75000002#findElement_E7045_519992266ccc19f97b0010a1_0 |
| Автор: Georg97 20.5.2013, 17:54 | ||||||||
Че-то выдает ошибку not enough actual parameters!
Для чего мне не нужно dll - да для того, что если я захочу создать 64-разрядный проект, то делфа будет оч здорого материться (вернее ее компилятор).
Ну и где написано, что она поддерживает 7z или LZMA? Добавлено @ 18:08
Я наверное оговорился - поделитесь ссылкой... |
| Автор: Slavikus 21.5.2013, 14:09 |
| http://sourceforge.net/projects/tpabbrevia/ Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id5196bb626ccc191c75000002#findElement_E7045_519b55f36ccc192967005db4_0 |
| Автор: Georg97 21.5.2013, 16:52 | ||
On Windows it also provides Delphi wrappers for the LZMA, Bzip2, and WavPack SDKs, and PPMd decompression. - Тока декомпрессия! |
| Автор: kami 21.5.2013, 22:08 |
Кто такое сказал? Потрудитесь воспользоваться автоматическим переводчиком. А еще лучше - скачайте архив по ссылке, и убедитесь в наличии как минимум двух путей для компрессии и декомпрессии LZMA: отдельные функции и потоки. И потом - уважаемый, от вас до сих пор не видно было ни единой конкретной "заморочки", одни общие фразы типа "хочу, чтобы работало, а оно только под консоль". Возьмите наиболее "действующий" вариант вашего кода, выложите его сюда и объясните: "делаю так и так, должно запаковаться/распаковаться. А оно вот тут выдает вот такую ошибку". А так - можно за вас весь интернет перелопатить и ничего вам не подойдет, т.к. всё время будут ошибки (ваши, заметьте!) вроде такой: |
| Автор: Georg97 22.5.2013, 16:45 | ||
1. Да я пробовал хромовский переводчик, но ни слова о упаковки файлов алгоритмом LGMA там нет! Поэтому качать и не стал! 2. А вариант в начале темы вас не устраивает? |
| Автор: kami 22.5.2013, 17:15 | ||
без комментариев. Ждите, пока вам выкатят компонент TProgrammer. Не устраивает. Потому что в "варианте в начале темы" нет ни строчки вашего кода. И кроме того, судя по uses он предназначен для KOL. |
| Автор: kami 22.5.2013, 20:38 |
| Именно во вложениях я и смотрел. Иначе бы не сказал то, что было сказано. Не надо сарказма, он вам плохо удается. А если вы догадаетесь посмотреть на объявление функции CreateOutArchive, то сразу поймете - почему "сдесь ругается", т.к. название недостающего параметра говорит само за себя. |