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


Автор: HuligankaDianka 7.3.2009, 05:44
У меня на работе возникла необходимость написать программу резервного
копирования файлов,суть которой в следующем:
- указываем необходимые для архивации папки
- передаем их в виде параметров с помощью процедуры ShellExecute
внешнему архиватору ждем пока работа внешнего приложения закончится
- созданный файл переименовываем и перемещаем в папку где хранятся файлы резервных
копий.



....Может, у кого есть исходник???или подскажете, с чего начать...я в принципе понимаю,как это сделать,но сомневаюсь.....очень надо срочно.....хотя бы какие параметры должны быть в файле конфигурвции...как предусмотреть любой архиватор....все это писать с помощью команд архиваторов и shellexecute(), или как-то по-другому....



Очень надеюсь, что бедной девушке помогут........ smile 

Автор: ~FoX~ 7.3.2009, 10:18
HuligankaDianka, 
1. Читайте правила форума  smile  Нельзя создавать одинаковые темы!!!
2. Где код, что не получается?
3. Ко всем архиваторам есть мануал с описанием ключей командной строки...
4. Все это проще реализовать не на делфи а простыми скриптами...ИМХО...

Автор: bems 7.3.2009, 12:37
пиши батник

Автор: HuligankaDianka 8.3.2009, 07:21
В руководстве RAR написано:
 v[t,b]  Вывести подробный список содержимого архива [с технической 
           информацией]
У меня не работает:
ShellExecute(Form1.Handle, PChar('open'),
              PChar(DirArchivator),
              Pchar('x -r  -m5 -vt >1.lst  '+DirArchiveUpdate+' '+DirUpdate), nil, SW_Hide );
Для WinRAR пишет, что такой команды нет, или что архивы не найдены...а в RAR вообще ничего не делает...
Как воспользоваться этой командой?

Автор: MetalFan 8.3.2009, 10:47
Цитата(HuligankaDianka @  8.3.2009,  07:21 Найти цитируемый пост)
У меня не работает

что-то у вас каша какая-то...
Rar.exe vt ARHFILENAME >list.txt
выведет список файлов в архиве ARHNAME в файл list.txt

Автор: HuligankaDianka 10.3.2009, 02:19
А как узнать список файлов с директориями в архиве?
И потом сделать резервную копию таких же файлов с такой же структурой каталогов в папке на диске?

Автор: Данкинг 10.3.2009, 02:23
Цитата(HuligankaDianka @  10.3.2009,  02:19 Найти цитируемый пост)
А как узнать список файлов с директориями в архиве?

Тебе же MetalFan пример написал. Выводишь в текстовый файл, потом его парсишь.

Автор: CompWorm 10.3.2009, 16:22
я в свое время ковырял мануал РАРа на вопрос распаковки архива и РАРовского мануала вполне достаточно, ИМХО, для абсолютного большинства задач. 
вот что я накалякал для распаковки:
Код

PAT:=ExtractFilePath(Application.ExeName); //путь к файлу *RAR
PATS:='"C:\Program Files\WinRAR\winrar.exe" x "'+PAT+'TEMP_UPDATE.zip" *.* "'+PAT+'" -y';
PATA:=Pchar(PATS);
WinExec(PATA, SW_SHOWNORMAL);

попробуй как-то повдумчивей почитать мануал и на основе этого кода запаковать свои данные.

Добавлено через 4 минуты
Цитата(bems @  7.3.2009,  12:37 Найти цитируемый пост)
пиши батник

поддерживаю. конкретно в этом случае лично я писал бы батник.

Автор: HuligankaDianka 20.3.2009, 01:57
Архиватор должен задаваться в ini, его команды тоже.
      (также с zip, arj, чтобы
      не пришлось при изменении архиватора изменять исходный
      код программы).

Что в таком случае делать?

Автор: Данкинг 20.3.2009, 02:00
Цитата(HuligankaDianka @  20.3.2009,  01:57 Найти цитируемый пост)
Что в таком случае делать? 

Как что? Вероятно, поискать по форуму посты о работе с INI-файлами. smile 

Автор: THandle 20.3.2009, 08:43
HuligankaDianka, 

http://forum.vingrad.ru/articles/topic-197956.html

Автор: HuligankaDianka 21.3.2009, 06:33
как с ini работать я знаю (спасибо большое)....я не понимаю как предусмотреть возможности всех архиваторов....как это вообще должно выглядеть..
где взять консольные команды для всех архиваторов????
программа должна считать из ini директорию к архиватору и параметры (команды) например для распаковки архива и соответственно распаковать...в ini все прописывается вручную (директории и все остальное)...но команды  для всех архиваторов должны быть уже прописаны...это что, для каждого архиватора делать секцию с параметрами?а потом в программе написать цикл,кот. в зависимости от названия архиватора передает из соответствующей секции ini все параметры и т.д.?как это выглядит ??????код...пример...

Автор: Данкинг 21.3.2009, 12:01
Цитата(HuligankaDianka @  21.3.2009,  06:33 Найти цитируемый пост)
где взять консольные команды для всех архиваторов????

Наверное, в хелпе для этих архиваторов.

Цитата(HuligankaDianka @  21.3.2009,  06:33 Найти цитируемый пост)
это что, для каждого архиватора делать секцию с параметрами?

Лично я другого пути не вижу. smile Секция RAR - параметр "развернуть". Секция ZIP - параметр "развернуть". И т.д.

Цитата(HuligankaDianka @  21.3.2009,  06:33 Найти цитируемый пост)
а потом в программе написать цикл,

Ну типа того... 

Цитата(HuligankaDianka @  21.3.2009,  06:33 Найти цитируемый пост)
как это выглядит ??????

Это тебе домашнее задание на выходные. smile 

Автор: HuligankaDianka 22.3.2009, 01:33
Спасибо....за домашнее задание...я думала тут сидят реальные программеры,для которых этот кусочек кода не составит труда...а тут не умнее меня..наверное...я и сама знаю, что наверное это должно быть так...ну и ладно..сама справлюсь...

Автор: Данкинг 22.3.2009, 01:58
Модератор: Сообщение скрыто.

Автор: THandle 22.3.2009, 08:58
Данкинг, пожалуйста, меньше флуда. Пока устное замечание.

HuligankaDianka, тут сидят люди чтобы помочь, а не сделать все вместо тебя.
Да и вообще не понятно. Что значит все архиваторы? Самодельный архиватор некого суслика тоже считается? 
Если брать все архиваторы, то их очень много. Это и те, которые реально используются, и те которые написаны студентами в виде лабораторных работ, и просто программки написанные отдельными программистами для того, чтобы усовершенствовать свои навыки.

Так что подразумевается под все?

Автор: HuligankaDianka 23.3.2009, 01:31
 smile 

Автор: THandle 23.3.2009, 08:44
Ну что ж, на этой оффтоповой ноте темы мы и закрываем.

Мой вопрос был проигнорирован, оффтоп продолжился - о чем тут еще можно говорить?

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