Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с архивами, разархивировать в директорию 
:(
    Опции темы
neweraser
Дата 30.6.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



подскажите, как можно, или с чего начать, я даже примерно не знаю, мне надо по нажатию кнопочки разархивировать архив в определенную директорию, например C:\example\


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
CodeMonkey
Дата 30.6.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



А какой архив-то? Zip, rar, 7z?
В общем случае можно запустить программу-архиватор с нужными параметрами (узнать можно в справке по программе). В каком-то конкретном случае можно воспользоваться депакером в виде DLL или pas-модуля. 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
neweraser
Дата 30.6.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



архивы 7z, хотелось бы запускать программу-архиватор, ну там же в справке не написано как это сделать из delphi
хочу сделать просто как бы "оболочку" для диска с софтом, а все программы там в архивах


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
ne0n
Дата 30.6.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 4
Всего: 11



neweraser, смотри в справке параметры камандной строки
PM MAIL ICQ   Вверх
Snowy
Дата 30.6.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



PM MAIL   Вверх
neweraser
Дата 30.6.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



в какой справке? winrar или delphi?  smile не понимаю я...


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
ne0n
Дата 30.6.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 4
Всего: 11



Цитата(neweraser @  30.6.2008,  13:44 Найти цитируемый пост)
в какой справке? winrar или delphi? 

ну судя по всему и ту и ту справку смотреть придеться)

из хэлпа винрара
Код

WinRAR допускает управление из командной строки. Общий синтаксис командной строки таков:

WinRAR  <команда>  -<ключ1>  -<ключN>  <архив>  <файлы…>  <@файл-список…>  <путь для извлечения\>

команда    Комбинация символов, определяющая действие, которое будет выполнять WinRAR.
ключ    Ключи используются для определения специфических действий, степени сжатия, типа архива и пр.
архив    Имя обрабатываемого архива.
файлы    Имена обрабатываемых файлов.
файл-список    Файлы-списки - это обычные текстовые файлы, содержащие имена файлов для обработки. Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки. В файл-список допускается помещать комментарии, признак начала комментария - символы //. Например, для архивирования файлов *.txt из папки c:\work\doc, файлов *.bmp из папки c:\work\image и всех файлов из папки c:\work\misc можно создать backup.lst, содержащий следующие строки:c:\work\doc\*.txt    //резервная копия текстовc:\work\image\*.bmp    //резервная копия рисунковc:\work\miscПосле этого для архивирования достаточно будет выполнить команду:winrar a backup @backup.lstВ одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки. Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. WinRAR обработает все файлы).
путь для извлечения    Используется только с командами e и x и указывает папку, в которую нужно извлекать файлы. Если эта папка не существует, то она будет создана.
Замечания

а)    Если не указаны ни файлы, ни файл-список, то подразумевается шаблон *.*, т.е. WinRAR обработает все файлы.
б)    Если не указано расширение архива, то WinRAR будет использовать формат архива по умолчанию, выбранный в профиле архивации по умолчанию, но если вы хотите указать тип архива явно, то это можно сделать добавлением к имени архива расширения RAR или ZIP.
в)    Ключи, введённые в командной строке, имеют более высокий приоритет, чем соответствующие установки в диалоге конфигурации, т.е. используются параметры, заданные ключами.

г)    Для команд C, E, S, T, RR, K и X в имени архива допускается использовать шаблоны, поэтому одной командой можно обработать сразу нескольких архивов. Более того, если вместе с этими командами указать ключ -r, то поиск архивов будет вестись и во всех вложенных папках.
д)    Некоторые команды и ключи применимы только к архивам RAR, некоторые — к архивам RAR и ZIP, а некоторые — к архивам всех поддерживаемых форматов. Это зависит от возможностей, заложенных в формат архива.

е)    Команды и ключи не зависят от регистра символов, поэтому вы можете набирать их как строчными, так и прописными буквами.


Код

A    Добавить файлы в архив
C    Добавить архивный комментарий
CH    Изменить параметры архива
CV    Преобразовать архивы
CW    Записать в файл комментарий архива
D    Удалить файлы из архива
E    Извлечь файлы из архива, игнорируя пути
F    Освежить файлы в архиве
I    Найти строку в архивах
K    Заблокировать архив
M    Переместить файлы и папки в архив
R    Восстановить поврежденный архив
RC    Воссоздать недостающие тома
RN    Переименовать файлы в архиве
RR[N]    Добавить информацию для восстановления
RV[N]    Создать тома для восстановления
S[имя]    Преобразовать архив в самораспаковывающийся
S-    Удалить SFX-модуль
T    Протестировать файлы в архиве
U    Обновить файлы в архиве
X    Извлечь файлы из архива с полными путями


просто запускаешь архиватор с параметрами и все!


PM MAIL ICQ   Вверх
CompWorm
Дата 30.6.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



если я не ошибаюсь, то винрар работает с 7zip... хотя я не пользуюсь этим форматом.
тогда попробуй так:
Код

var PAT, PATS: string;
var PATA: PAnsiChar;
...
PAT:=ExtractFilePath(Application.ExeName);
PATS:='"C:\Program Files\WinRAR\winrar.exe" x "'+PAT+'TEMP_UPDATE.zip" *.* "'+PAT+'" -y';
PATA:=Pchar(PATS);
WinExec(PATA, SW_SHOWNORMAL);

... вырезка из моей проги. пути, конечно поправь, как тебе удобно, но важно сохранить параметры x и -y . чтобы заменялся существующий файл, если он вдруг есть, и при этом заменялся без лишних вопросов.
подробней можно прочесть в справке вин-рара по командной строке.
с rar и zip у меня работает на ура.  smile 


--------------------
PM MAIL   Вверх
CodeMonkey
Дата 30.6.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Как запустить другую программу - см. например:
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 секунд
Цитата(CompWorm @  30.6.2008,  13:52 Найти цитируемый пост)
если я не ошибаюсь, то винрар работает с 7zip...

Если запускать WinRar.exe - то он распакует 7z архив. 
Если же использовать решение, оперирующее unrar.dll, то распаковать 7z архив таким способом не удасться.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
neweraser
Дата 30.6.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Тогда, думаю лучше использовать сам winrar, 
CompWorm, напиши пожалуйста комментарии к коду, что-то ничего не могу понять, вроде все просто, только вот за что отвечают x и у?


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Snowy
Дата 30.6.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Вы не путайте винрар и 7zip
Да, сам винрар поддерживает данный формат.
Но из коммандной строки работать с ним не будет.
Для распаковки существуют dll, как для винрара, так и для 7zip'a
Я дал уже линку на компонент, который работает с dll севензипа.
Есть аналогичный и для винрара, но только для распаковки.
Автор спрашивал про 7Zip - я дал линку на враппер к 7Zip.
А делать через консоль - не лучший вариант.
Оболочка, которая вызывает консоль для распаковки, выглядит ну никак не впечатляюще.
PM MAIL   Вверх
CodeMonkey
Дата 30.6.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(neweraser @  30.6.2008,  14:17 Найти цитируемый пост)
Тогда, думаю лучше использовать сам winrar

Скажите, а какие есть причины использовать WinRAR для распаковки архивов 7zip? Почему бы для распаковки не использовать родной архиватор. Вы хотите воспользоваться тем, что WinRAR уже стоит на многих машинах?

Цитата(neweraser @  30.6.2008,  14:17 Найти цитируемый пост)
только вот за что отвечают x и у

Посмотрите выше, вам ne0n привёл вырезку из справки WinRAR, где объяснено, что такое x. y - это "отвечать "Да" на все запросы".

Добавлено через 1 минуту и 12 секунд
Цитата(Snowy @  30.6.2008,  14:23 Найти цитируемый пост)
Но из коммандной строки работать с ним не будет

Здесь ошибка: он будет работать.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Snowy
Дата 30.6.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Использовать для распаковки 7Zip WinRar - бред.
Вместо связки программа - враппер - 7Zip.dll
использовать связку программа - запуск винрара - враппер - 7Zip.dll
Ну и нафига тут винрар?
Он сам не распаковывает - для этого ему нужна та же самая 7Zip.dll
Логику чувствуете?
PM MAIL   Вверх
CodeMonkey
Дата 30.6.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Цитата(Snowy @  30.6.2008,  14:34 Найти цитируемый пост)
Использовать для распаковки 7Zip WinRar - бред

P.S. Лично я с вами согласен.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
neweraser
Дата 30.6.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



что-то я совсем запутался, так что лучше использовать? скачал SevenZipVCL, тоже не понимаю ничего  smile 


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0998 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.