Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Работа с алгоритмом архивации LZMA


Автор: Georg97 18.5.2013, 02:20
Отыскал в просторах интернета архив с реализацией LZMA алгоритма.
Никак не получается прикрутить упаковку/распаковку файла к функциям этой библиотеки?
Поделитесь пожалуйста своими соображениями или есть какая другая библиотека с работой одним файлом: сжатие-распаковка (модули лучше с ассемблерными вставками; можно в MemoryStream). Только работающая с большими файлами тоже! В интернете смотрел: только  7za.dll (SevenZipVCL) оказался рабочим, да и то с небольшими файлами и только упаковывает! Остальное - либо под консоль, либо вообще не работает!!! smile 

Автор: northener 18.5.2013, 14:42
Попробуйте http://rouse.drkb.ru/components.php

Автор: Georg97 18.5.2013, 14:48
Цитата(northener @ 18.5.2013,  14:42)
Попробуйте http://rouse.drkb.ru/components.php

Нет нужен не ZIP, а LZMA! smile 
Ну или 7-Zip, но для работы с одним файлом или простенький модуль, желательно с ассемблерными вставками, работающий с большим объемом файла...

Автор: northener 19.5.2013, 03:24
Цитата(Georg97 @  18.5.2013,  14:48 Найти цитируемый пост)
Нет нужен не ZIP, а LZMA

А почему это требование так важно, если от модуля требуется не только распапковка, но и запаковка?
И зачем желательны "ассемблерные вставки"?
Какое-то странное желание :(
P.S.
Семестр заканчивается. Скоро нужно сдавать курсовую. А "воз и ныне там"? smile

Автор: StranikS 19.5.2013, 13:13
Вот пожалуйста, модуль для работы с библиотекой 7z.dll. В архиве:
- сам модуль SevenZIP.pas, его надо прикрутить к программе в разделе uses;
- последняя версия 7z.dll - взят мной из 7-zip 9.20, его нужно закинуть в папку с вашей программой
- readme-файл с описанием.


Автор: StranikS 19.5.2013, 13:15
И еще раз тот-же архив smile)))
ЗЫ: Не понравился мне новый движок сайта...

Автор: Georg97 19.5.2013, 16:42
Цитата(StranikS @ 19.5.2013,  13:13)
Вот пожалуйста, модуль для работы с библиотекой 7z.dll. В архиве:
- сам модуль SevenZIP.pas, его надо прикрутить к программе в разделе uses;
- последняя версия 7z.dll - взят мной из 7-zip 9.20, его нужно закинуть в папку с вашей программой
- readme-файл с описанием.

Спасибо конечно, но можно как-то без dll или свою хотя-бы написать (есть исходники у кого)? Я кстате немного разобрался с SevenZipVCL, только при  архивации/извлечении файл сохраняется в текущую директорию с программой... - Просто мозгов не хватает переделать модуль, предназначенный для консольного приложения!
Цитата(northener @ 8.5.2013,  14:48)
А почему это требование так важно, если от модуля требуется не только распапковка, но и запаковка?
И зачем желательны "ассемблерные вставки"?
Какое-то странное желание :(
P.S.
Семестр заканчивается. Скоро нужно сдавать курсовую. А "воз и ныне там"?

1. Говорю сразу - пишу для себя!
2. Я так понимаю что 7za.dll,  что 7z.dll написаны на ассемблере?

Почему  говорю, что надо свою dll - потому, что при попытке распаковать файл с переименованным расширением, скажем: wav в 7z выскакивает диалог открытия файлов из этой dll и требует какой-то -VOLUME файл, после чего программа вылетает, а мне надо: 
Код

MessageBox(handle, 'Не удалось распаковать файл!', 'Ошибка чтения файла!', MB_ICONWARNING);

Автор: StranikS 19.5.2013, 20:45
Цитата(Georg97 @ 19.5.2013,  16:42)
Спасибо конечно, но можно как-то без dll или свою хотя-бы написать (есть исходники у кого)?

Самому? Зачем изобретать велосипед?
Если не хотите чтоб с экзешником таскались лишние файлы, то можно dll защить в ресурс и прикомпилить к exe-файлу, а затем извлекать из ресурса в TEMP и пользоваться ей, когда прога запущена.

Автор: northener 20.5.2013, 00:25
Цитата(Georg97 @  19.5.2013,  16:42 Найти цитируемый пост)
Почему  говорю, что надо свою dll - потому, что

Ну пусть так. Но всё-таки почему
Цитата(Georg97 @  18.5.2013,  14:48 Найти цитируемый пост)
желательно с ассемблерными вставками
?

Цитата(Georg97 @  19.5.2013,  16:42 Найти цитируемый пост)
2. Я так понимаю что 7za.dll,  что 7z.dll написаны на ассемблере?

С чего вы это взяли?

Автор: Georg97 20.5.2013, 01:35
Цитата(northener @ 20.5.2013,  00:25)
С чего вы это взяли?

А у вас есть pas - файл?
Поделитесь!

Автор: northener 20.5.2013, 02:00
Цитата(Georg97 @  20.5.2013,  01:35 Найти цитируемый пост)
А у вас есть pas - файл?
Поделитесь! 

Даже если бы у меня был тот "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
Цитата(StranikS @ 19.5.2013,  13:13)
Вот пожалуйста, модуль для работы с библиотекой 7z.dll. В архиве:
- сам модуль SevenZIP.pas, его надо прикрутить к программе в разделе uses;
- последняя версия 7z.dll - взят мной из 7-zip 9.20, его нужно закинуть в папку с вашей программой
- readme-файл с описанием.

Че-то выдает ошибку not enough actual parameters!
Код

 procedure TMainForm.ExtractAllClick(Sender: TObject);
 var
   Arch: I7zOutArchive;
 begin
   Arch := CreateOutArchive(CLSID_CFormat7z);//На против этой строки (выделяет скобки)? А в остальном - нет, ни каких проблем...
...

Для чего мне не нужно dll - да для того, что если я захочу создать 64-разрядный проект, то делфа будет оч здорого материться (вернее ее компилятор).

Цитата(david_yu @ 20.5.2013, 06:01)
есть http://sageshome.net/oss/paszlib-sg.php

Ну и где написано, что она поддерживает 7z или LZMA?

Добавлено @ 18:08
Цитата(northener @ 20.5.2013,  02:00)
Цитата(Georg97 @  20.5.2013,  01:35 Найти цитируемый пост)
А у вас есть pas - файл?
Поделитесь! 

Даже если бы у меня был тот "pas - файл" , я не стал бы делиться с первым встречным!

Я наверное оговорился - поделитесь ссылкой...

Автор: northener 21.5.2013, 01:11
Цитата(Georg97 @  20.5.2013,  17:54 Найти цитируемый пост)
Для чего мне не нужно dll - да для того, что если я захочу создать 64-разрядный проект, то делфа будет оч здорого материться (вернее ее компилятор).

Да ну! Неужели аж сам компилятор будет ругаться?

Автор: 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
Цитата(Slavikus @ 21.5.2013,  14:09)
http://sourceforge.net/projects/tpabbrevia/



Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id5196bb626ccc191c75000002#findElement_E7045_519b55f36ccc192967005db4_0

On Windows it also provides Delphi wrappers for the LZMA, Bzip2, and WavPack SDKs, and PPMd decompression.
- Тока декомпрессия!

Автор: kami 21.5.2013, 22:08
Цитата(Georg97 @  21.5.2013,  16:52 Найти цитируемый пост)
Тока декомпрессия!

Кто такое сказал? Потрудитесь воспользоваться автоматическим переводчиком.
А еще лучше - скачайте архив по ссылке, и убедитесь в наличии как минимум двух путей для компрессии и декомпрессии LZMA: отдельные функции и потоки.

И потом - уважаемый, от вас до сих пор не видно было ни единой конкретной "заморочки", одни общие фразы типа "хочу, чтобы работало, а оно только под консоль".
Возьмите наиболее "действующий" вариант вашего кода, выложите его сюда и объясните: "делаю так и так, должно запаковаться/распаковаться. А оно вот тут выдает вот такую ошибку".

А так - можно за вас весь интернет перелопатить и ничего вам не подойдет, т.к. всё время будут ошибки (ваши, заметьте!) вроде такой:
Цитата(Georg97 @  20.5.2013,  17:54 Найти цитируемый пост)
Че-то выдает ошибку not enough actual parameters


Автор: Georg97 22.5.2013, 16:45
Цитата(kami @ 21.5.2013,  22:08)
Цитата(Georg97 @  21.5.2013,  16:52 Найти цитируемый пост)
Тока декомпрессия!

Кто такое сказал? Потрудитесь воспользоваться автоматическим переводчиком.
А еще лучше - скачайте архив по ссылке, и убедитесь в наличии как минимум двух путей для компрессии и декомпрессии LZMA: отдельные функции и потоки.

И потом - уважаемый, от вас до сих пор не видно было ни единой конкретной "заморочки", одни общие фразы типа "хочу, чтобы работало, а оно только под консоль".
Возьмите наиболее "действующий" вариант вашего кода, выложите его сюда и объясните: "делаю так и так, должно запаковаться/распаковаться. А оно вот тут выдает вот такую ошибку".

А так - можно за вас весь интернет перелопатить и ничего вам не подойдет, т.к. всё время будут ошибки (ваши, заметьте!) вроде такой:
Цитата(Georg97 @  20.5.2013,  17:54 Найти цитируемый пост)
Че-то выдает ошибку not enough actual parameters

1. Да я пробовал хромовский переводчик, но ни слова о упаковки файлов алгоритмом LGMA там нет! Поэтому качать и не стал!
2. А вариант в начале темы вас не устраивает?

Автор: kami 22.5.2013, 17:15
Цитата(Georg97 @  22.5.2013,  16:45 Найти цитируемый пост)
Да я пробовал хромовский переводчик, но ни слова о упаковки файлов алгоритмом LGMA там нет! Поэтому качать и не стал!

без комментариев. Ждите, пока вам выкатят компонент TProgrammer.

Цитата(Georg97 @  22.5.2013,  16:45 Найти цитируемый пост)
2. А вариант в начале темы вас не устраивает?

Не устраивает. Потому что в "варианте в начале темы" нет ни строчки вашего кода. И кроме того, судя по uses он предназначен для KOL.

Автор: kami 22.5.2013, 20:38
Именно во вложениях я и смотрел. Иначе бы не сказал то, что было сказано.
Не надо сарказма, он вам плохо удается.
А если вы догадаетесь посмотреть на объявление функции CreateOutArchive, то сразу поймете - почему "сдесь ругается", т.к. название недостающего параметра говорит само за себя.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)