| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > работа с архивами |
| Автор: neweraser 30.6.2008, 11:09 |
| подскажите, как можно, или с чего начать, я даже примерно не знаю, мне надо по нажатию кнопочки разархивировать архив в определенную директорию, например C:\example\ |
| Автор: CodeMonkey 30.6.2008, 12:52 |
| А какой архив-то? Zip, rar, 7z? В общем случае можно запустить программу-архиватор с нужными параметрами (узнать можно в справке по программе). В каком-то конкретном случае можно воспользоваться депакером в виде DLL или pas-модуля. |
| Автор: neweraser 30.6.2008, 13:11 |
| архивы 7z, хотелось бы запускать программу-архиватор, ну там же в справке не написано как это сделать из delphi хочу сделать просто как бы "оболочку" для диска с софтом, а все программы там в архивах |
| Автор: ne0n 30.6.2008, 13:28 |
| neweraser, смотри в справке параметры камандной строки |
| Автор: Snowy 30.6.2008, 13:43 |
| http://www.rg-software.de/ |
| Автор: neweraser 30.6.2008, 13:44 |
| в какой справке? winrar или delphi? |
| Автор: ne0n 30.6.2008, 13:52 | ||||
ну судя по всему и ту и ту справку смотреть придеться) из хэлпа винрара
просто запускаешь архиватор с параметрами и все! |
| Автор: CompWorm 30.6.2008, 13:52 | ||
| если я не ошибаюсь, то винрар работает с 7zip... хотя я не пользуюсь этим форматом. тогда попробуй так:
... вырезка из моей проги. пути, конечно поправь, как тебе удобно, но важно сохранить параметры x и -y . чтобы заменялся существующий файл, если он вдруг есть, и при этом заменялся без лишних вопросов. подробней можно прочесть в справке вин-рара по командной строке. с rar и zip у меня работает на ура. |
| Автор: CodeMonkey 30.6.2008, 13:59 |
| Как запустить другую программу - см. например: http://forum.vingrad.ru/faq/topic-156273.html http://forum.vingrad.ru/forum/topic-100941/index.html http://forum.vingrad.ru/forum/topic-203947/index.html http://forum.vingrad.ru/forum/topic-217054/index.html TSevenZipVCL - это оболочка к DLL-ке от 7zip. Т.е. при его использовании нужно будет таскать с приложением DLL-библиотеку. Я бы рекомендовал использовать его. Добавлено через 8 минут и 29 секунд Если запускать WinRar.exe - то он распакует 7z архив. Если же использовать решение, оперирующее unrar.dll, то распаковать 7z архив таким способом не удасться. |
| Автор: neweraser 30.6.2008, 14:17 |
| Тогда, думаю лучше использовать сам winrar, CompWorm, напиши пожалуйста комментарии к коду, что-то ничего не могу понять, вроде все просто, только вот за что отвечают x и у? |
| Автор: Snowy 30.6.2008, 14:23 |
| Вы не путайте винрар и 7zip Да, сам винрар поддерживает данный формат. Но из коммандной строки работать с ним не будет. Для распаковки существуют dll, как для винрара, так и для 7zip'a Я дал уже линку на компонент, который работает с dll севензипа. Есть аналогичный и для винрара, но только для распаковки. Автор спрашивал про 7Zip - я дал линку на враппер к 7Zip. А делать через консоль - не лучший вариант. Оболочка, которая вызывает консоль для распаковки, выглядит ну никак не впечатляюще. |
| Автор: CodeMonkey 30.6.2008, 14:26 |
Скажите, а какие есть причины использовать WinRAR для распаковки архивов 7zip? Почему бы для распаковки не использовать родной архиватор. Вы хотите воспользоваться тем, что WinRAR уже стоит на многих машинах? Посмотрите выше, вам ne0n привёл вырезку из справки WinRAR, где объяснено, что такое x. y - это "отвечать "Да" на все запросы". Добавлено через 1 минуту и 12 секунд Здесь ошибка: он будет работать. |
| Автор: Snowy 30.6.2008, 14:34 |
| Использовать для распаковки 7Zip WinRar - бред. Вместо связки программа - враппер - 7Zip.dll использовать связку программа - запуск винрара - враппер - 7Zip.dll Ну и нафига тут винрар? Он сам не распаковывает - для этого ему нужна та же самая 7Zip.dll Логику чувствуете? |
| Автор: CodeMonkey 30.6.2008, 14:48 |
P.S. Лично я с вами согласен. |
| Автор: neweraser 30.6.2008, 14:53 |
| что-то я совсем запутался, так что лучше использовать? скачал SevenZipVCL, тоже не понимаю ничего |
| Автор: Snowy 30.6.2008, 15:00 |
| 1. Установи компонент. 2. Скомпилируй пример, который идёт в комплекте. 3. Посмотри, как сделано там и сделай аналогично в своей программе. 4. Не забывай, что для работы, 7za.dll должна лежать рядом с твоей программой. |
| Автор: neweraser 1.7.2008, 08:34 |
| я не то что откомпиллировать не могу - даже открыть, пишет что не может найти файл SevenZipDemo.res. Recreated |
| Автор: neweraser 1.7.2008, 12:45 |
| все равно не получается, потом пишет "class TSevenZip not found" |
| Автор: CodeMonkey 1.7.2008, 13:06 |
| А кто будет устанавливать компонент? http://www.google.com/search?&q=%D0%BA%D0%B0%D0%BA+%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C+%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82+Delphi Была же пошаговая инструкция: |
| Автор: neweraser 1.7.2008, 13:38 |
| спасибо! все получилось, буду дальше разбираться |
| Автор: Juice 11.12.2008, 03:39 |
| Всё-таки проще было таскать с собой 7z.dll и 7z.exe - всего лишь 700К. Нужно-то только вызвать 7z e -o ... P.S. Зато научился компоненты ставить |