Создание архива в Delphi средствами Winrar
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Создание архива в Delphi средствами Winrar - 2008-07-14 11:26:48.740000
|
|
|
Meffisto
Сообщений: 16
Оценки: 0
Присоединился: 2008-06-17 14:59:48.720000
|
использую консольную версию Winrar для создания архива , только вот загвоздка заключаеться в том что у меня есть три папки Inst в ней храняться инструкции , serv в ней храняться серверные компоненты , и папка Client в ней храняться клиентские части проги , так вот задача заключаеться в том что бы в архиве было две так две папки(Inst ,serv ) слитые в одну или просто лежащие без папки , и одна папка Client. А вот как сделать ума не приложу. Помогите пожалуйста
|
|
|
RE: Создание архива в Delphi средствами Winrar - 2008-07-14 14:51:26.196666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
1. Научиться создавать папки 2. Изучить команды архиватора 3. Если не помогло - написать свой упаковщик/распаковщик. P.S. А причём тут дэлфи?
|
|
|
RE: Создание архива в Delphi средствами Winrar - 2008-07-15 09:05:51.166666
|
|
|
Valiant
Сообщений: 55
Оценки: 0
Присоединился: 2008-07-14 15:01:54.353333
|
всё просто качаем sdk по winRAR там всё написано как делать, по русски написано!
|
|
|
RE: Создание архива в Delphi средствами Winrar - 2008-07-15 16:16:25.333333
|
|
|
Alaget
Сообщений: 330
Оценки: 0
Присоединился: 2007-11-08 15:57:53.170000
|
quote:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function ExecAndWait(const FileName, Params: string; WindowState: Word): Boolean; var SUInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: string; begin CmdLine := '"' + FileName + '"' + Params; FillChar(SUInfo, SizeOf(SUInfo), #0); with SUInfo do begin cb := SizeOf(SUInfo); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := WindowState; end; Result := CreateProcess(nil, PChar(CmdLine), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(FileName)), SUInfo, ProcInfo); if Result then WaitForSingleObject(ProcInfo.hProcess, INFINITE); end; procedure TForm1.Button1Click(Sender: TObject); begin ExecAndWait('C:\Rar.exe','a -m5 A.rar C:\1.dbf',SW_SHOW); end; procedure TForm1.Button2Click(Sender: TObject); begin ExecAndWait('C:\UnRar.exe',' e C:\A.rar C:\',SW_SHOW); end; end. quote:
RAR 3.40 ~~~~~~~~ 32-разрядная консольная версия ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ~~~~~~~~~~~~~~~~~~~~~~~~ Введение ~~~~~~~~ RAR - это мощное средство управления архивами. Консольная версия RAR поддерживает только архивы формата RAR, обычно имеющие расширение ".rar". Архивы ZIP и прочих форматов не поддерживаются. Пользователи Windows могут установить GUI-версию RAR - WinRAR, способную также обрабатывать архивы других типов. Некоторые отличительные особенности RAR: * Оригинальный высокоэффективный алгоритм сжатия данных * Специальные алгоритмы сжатия, оптимизированные для текстовых, аудио- и графических данных, а также для 32- и 64-битовых исполняемых файлов архитектуры Intel * Лучшая, чем у аналогичных продуктов, степень сжатия при использовании режима "непрерывного" (solid) архивирования * Электронная подпись (только в зарегистрированной версии) * Самораспаковывающиеся (SFX) архивы и тома * Восстановление физически поврежденных архивов * Блокировка, шифрование, задание порядка архивирования файлов, сохранение прав доступа к файлам, меток тома и др. Файл конфигурации ~~~~~~~~~~~~~~~~~ RAR для UNIX читает информацию о конфигурации из файла .rarrc, находящегося в домашнем каталоге пользователя (определяется по переменной окружения HOME) или в каталоге /etc. RAR для Windows читает информацию о конфигурации из файла rar.ini, находящегося в том же каталоге, что и файл Rar.exe. В этом файле может содержаться следующая строка: switches=<любые ключи RAR, разделенные пробелами> Переменная окружения ~~~~~~~~~~~~~~~~~~~~ Если вы хотите определить какие-то параметры как используемые по умолчанию, то их можно задать в переменной окружения с именем "RAR" (без кавычек). Например, в UNIX к вашему профилю можно добавить следующие строки: RAR='-s -md1024' export RAR RAR будет использовать указанные в этой строке параметры как используемые по умолчанию и всегда создавать непрерывные архивы со скользящим словарем размером 1024 Кб. RAR обрабатывает параметры в следующем порядке: ключи в командной строке высший приоритет ключи в переменной RAR средний приоритет ключи в файле конфигурации низший приоритет Файл протокола ~~~~~~~~~~~~~~ Если в командной строке или файле конфигурации указан ключ -ilog, то при возникновении ошибок RAR будет записывать сообщения о них в файл протокола. В UNIX этот файл называется .rarlog и размещается в домашнем каталоге пользователя. В Windows этот файл называется rar.log и размещается в том же каталоге, что и файл Rar.exe. Принимаемое по умолчанию имя файла-протокола можно изменить с помощью ключа -ilog. RarFiles.lst - Порядок добавления файлов в непрерывный архив ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В файле RarFiles.lst находится список файлов, указывающий RAR порядок добавления файлов в непрерывный архив. В этом файле могут содержаться имена файлов, шаблоны и специальный элемент - $default, определяющий место в списке для тех файлов, которые не соответствуют никакому другому критерию, определенному в RarFiles.lst. Строки, начинающиеся с символа ";", считаются комментариями. В Windows этот файл должен находиться в том же каталоге, что и RAR, в UNIX - в домашнем каталоге пользователя или в /etc. Советы по повышению степени сжатия и скорости выполнения операций: - файлы, содержащие похожую информацию, должны быть сгруппированы в архиве максимально близко; - файлы, к которым вы планируете обращаться чаще всего, должны находиться в начале архива. Обычно маски следует располагать ближе к началу списка, чтобы они имели более высокий приоритет, однако из этого правила есть исключение. Если rarfiles.lst содержит такие две маски, для которых выполняется условие, что все файлы, подходящие под первую маску, также подходят и под другую, то маска, указывающая на меньшее подмножество, будет иметь более высокий приоритет вне зависимости от её расположения. Например, при указании масок *.cpp и f*.cpp более высокий приоритет будет у маски f*.cpp, поэтому расположение в архиве файла 'filename.cpp' будет выбрано в соответствии с 'f*.cpp', а не с '*.cpp'. Синтаксис командной строки RAR ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Формат вызова: RAR <команда> [ -<ключи>… ] <архив> [<@файлы-списки…>] [<файлы…>] [ <путь_для_извлечения\> ] Описание Для создания и управления архивами служат параметры командной строки (команды и ключи). Команда - это строка (или одна буква), указывающая, что RAR должен выполнить соответствующее действие. Ключи модифицируют действие команды. Остальные параметры - это имена архива и файлов, которые будут добавлены или извлечены из архива. Файлы-списки - это обычные текстовые файлы, содержащие имена файлов для обработки. Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки. В файл-список допускается помещать комментарии, признак начала комментария - символы //. Например, для архивирования файлов *.txt из каталога c:\work\doc, файлов *.bmp из каталога c:\work\image и всех файлов из каталога c:\work\misc можно создать backup.lst, содержащий следующие строки: c:\work\doc\*.txt //резервная копия текстов c:\work\image\*.bmp //резервная копия рисунков c:\work\misc После этого для архивирования достаточно будет выполнить команду: rar a backup @backup.lst Если требуется прочитать имена файлов с устройства stdin (стандартный ввод), то после символа "@" не указывайте имя файла (просто @). Консольная Win32-версия RAR в файлах-списках использует OEM (DOS) кодировку. В одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки. Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. RAR обработает все файлы). В среде UNIX символы шаблона (* и ?) нужно заключать в одинарные кавычки, чтобы они не попадали под обработку RAR. Например, следующая команда извлечет все ASM-файлы из всех архивов RAR в текущий каталог: rar e '*.rar' '*.asm' Команды RAR ———– a Добавить файлы в архив Пример: rar a myarch В данном примере создается или обновляется существующий архив myarch - в него добавляются все файлы из текущего каталога. c Добавить комментарий к архиву Комментарии отображаются во время обработки архива. Длина комментария не должна превышать 62000 байт. Примеры: rar c distrib.rar Комментарии также можно добавлять из файла: rar c -zinfo.txt dummy cf Добавить комментарии к файлам в архиве Эти комментарии отображаются при использовании команды 'v'. Длина файлового комментария не должна превышать 32767 байт. Пример: rar cf bigarch *.txt cw Записать комментарий архива в указанный файл Пример: rar cw oldarch comment.txt d Удалить файлы из архива Обратите внимание, что если в результате выполнения этой команды из архива окажутся удаленными все файлы, то такой пустой архив также удаляется. e Извлечь файлы в текущий каталог f Освежить файлы в архиве Эта команда добавляет в архив только те файлы, которые там уже содержатся, но имеют более старые даты, чем соответствующие им файлы на диске. Файлы с новыми именами (т.е. те, которых нет в архиве) данной командой в архив не добавляются. i[i|c|h|t]=<строка> Поиск строки в архивах. Поддерживаются следующие необязательные параметры: i - не различать прописные и строчные буквы (по умолчанию); c - различать прописные и строчные буквы; h - поиск в шестнадцатеричном режиме; t - использовать таблицы символов ANSI, Unicode и OEM (только для Win32); Если ни один параметр не указан, вместо синтаксиса i=<строка> можно использовать более простую команду i<строка>. Модификатор 't' допускается применять вместе с другими параметрами, например, ict=строка выполнит чувствительный к регистру букв поиск с использованием всех вышеупомянутых таблиц символов. Примеры: 1) rar "ic=first level" -r c:\*.rar *.txt Выполнить регистрозависимый поиск строки "first level" в файлах *.txt, находящихся в архивах *.rar на диске c:. 2) rar ih=f0e0aeaeab2d83e3a9 -r e:\texts Найти шестнадцатеричную строку f0 e0 ae ae ab 2d 83 e3 a9 в архивах RAR, расположенных в каталоге e:\texts. k Заблокировать архив Заблокированный архив уже нельзя изменить средствами RAR. Пример: rar k final.rar l[t,b] Просмотреть содержимое архива [с технической информацией] Отображает список файлов как при использовании команды 'v', но без путей, т.е. выводятся только имена файлов. Если в команде присутствует модификатор 't', то будет также отображена дополнительная техническая информация (базовая ОС, флаги непрерывного архивирования и старой версии файла). Модификатор 'b' служит для того, чтобы RAR выводил только имена файлов без всякой дополнительной информации. m[f] Переместить в архив [только файлы] После успешного завершения операции архивирования добавленные в архив файлы и каталоги удаляются с диска. Если используется модификатор 'f' и/или ключ '-ed', то будут удалены только файлы, а каталоги (пустые) останутся на диске. p Извлечь (распечатать) файл на стандартное устройство вывода (stdout) Команду можно применять в сочетании с ключом -inul, чтобы запретить вывод всех сообщений RAR и посылать на печать только данные файла. Это может иметь особое значение, когда требуется отправить файл на stdout для конвейерного использования. r Восстановить архив Восстановление архива выполняется в два этапа. Сначала поврежденный архив сканируется на наличие информации для восстановления (см. команду 'rr'). Если в архиве есть информация для восстановления, а поврежденная часть данных непрерывна и имеет размер меньше, чем N*512 байт (где N - количество имеющихся в архиве секторов с информацией для восстановления), то шансы на успешное восстановление очень высоки. По завершении этого этапа создается новый архив с именем fixed.arcname.rar, где 'arcname' - имя исходного (повреждённого) архива. Если в поврежденном архиве нет информации для восстановления или архив невозможно полностью восстановить с ее помощью из-за серьезности повреждения, то выполняется второй этап восстановления. Во время этого этапа только реконструируется структура архива. Файлы с неверной CRC восстановить не удастся, однако становится возможным восстановить неповрежденные файлы, которые ранее были недоступны из-за повреждения структуры архива. Как правило, это помогает при восстановлении обычных архивов, но малоэффективно с непрерывными архивами. По завершения этого этапа создается реконструированный архив с именем rebuilt.arcname.rar, где 'arcname' - имя исходного архива. Версия RAR/DOS32 вместо вышеупомянутых имён использует имена _recover.rar и _reconst.rar. Во время выполнения операции восстановления RAR может выдать пользователю запрос о том, нужно ли добавлять в архив найденный элемент, считая его файлом: Подозрительный элемент Имя: <возможное имя файла> Размер: <размер> Размер в архиве: <упакованный размер> Добавить в архив? Да/Нет/Все Ответьте 'Да' (Y), чтобы добавить этот элемент в fixed.arcname.rar. Пример: rar r buggy.rar rc Воссоздать отсутствующие или повреждённые тома многотомного архива с помощью томов для восстановления (файлов .rev) В качестве имени архива нужно указать имя любого имеющегося тома, например: rar rc backup.part03.rar Информацию о томах для восстановления см. в описании команды 'rv'. rn Переименовать файлы в архиве Синтаксис команды: rar rn <архив> <исх_имя1> <рез_имя1> … <исх_имяN> <рез_имяN> Например, следующая команда: rar rn data.rar readme.txt readme.bak info.txt info.bak служит для переименования файла readme.txt в readme.bak и файла info.txt в info.bak в архиве data.rar. Для простых преобразований имен, например, изменения расширений файлов, в качестве исходного и результирующего имен допускается использовать символы подстановки (шаблоны). Например, команда: rar rn data.rar *.txt *.bak переименует все *.txt файлы в файлы *.bak. При переименовании RAR не проверяет, имеется ли в архиве файл с таким же именем, как указанное результирующее, поэтому будьте осторожны во избежание появления дублирующихся имен файлов. Особенно важно быть осмотрительным при использовании шаблонов. Такая команда потенциально опасна, поскольку при неправильном указании шаблона можно испортить имена всех файлов в архиве. rr[N] Добавить информацию для восстановления В архивы можно добавлять необязательную избыточную информацию для восстановления (защитную запись). Она немного увеличивает размер архива, однако может помочь при восстановлении архива, поврежденного в результате сбоя дискеты или другой потери данных. Информация для восстановления может содержать до 524288 секторов. Количество секторов можно задавать явно командой 'rr' (N = 1, 2 .. 524288). Если этот параметр не указан, то размер выбирается автоматически и составляет около 1% от общего объема архива, что обычно позволяет восстановить последовательно поврежденные данные длиной до 0,6% от общего объема архива. Кроме того, можно указывать размер информации для восстановления в процентах от объема архива. Для этого просто добавьте знак процента к параметру команды, например: rar rr3% arcname Обратите внимание, что если эту команду требуется вызвать из пакетного файла (.bat или .cmd), то нужно указывать не rr3%, а rr3%%, так как командный процессор воспринимает одиночный символ '%' как начало параметра пакетного файла. Вместо символа '%' допускается использовать латинскую букву 'p'. Например, команда 'rr3p' также будет правильной. Если данные повреждены на одном непрерывном участке, то каждый сектор восстановления может восстановить 512 байт поврежденной информации, однако в случае многократного повреждения это значение быть меньше. Примерный размер информации для восстановления можно определить по формуле: <размер архива>/256 + <число секторов восстановления>*512 байт rv[N] Создать тома для восстановления (файлы .rev) С помощью этих файлов впоследствии можно будет восстановить отсутствующие и повреждённые файлы в наборе томов многотомного архива. Эта команда применима только к многотомным архивам, в качестве имени архива нужно указать имя первого тома. Например: rar rv3 data.part01.rar Эта возможность может пригодиться при резервном копировании или, скажем, при отправке многотомного архива в сетевую конференцию, когда некоторые подписчики получили не все файлы. В этом случае достаточно будет отправить в конференцию тома для восстановления, а не обычные тома RAR, благодаря чему придется отсылать меньшее количество файлов. Каждый том для восстановления способен воссоздать один отсутствующий или повреждённый том RAR. Например, если архив состоит из 30 томов и для него создано 3 тома для восстановления, то вы сможете воссоздать любые 3 отсутствующие тома. Если файлов .rev меньше, чем отсутствующих томов
|
|
|
RE: Создание архива в Delphi средствами Winrar - 2008-07-16 12:23:05.500000
|
|
|
Valiant
Сообщений: 55
Оценки: 0
Присоединился: 2008-07-14 15:01:54.353333
|
думаю что можно было бы просто прикепить файло или дать сцылу незачем было это приводить в сабже
|
|
|
RE: Создание архива в Delphi средствами Winrar - 2011-06-15 23:41:33.290000
|
|
|
iamAlex
Сообщений: 1
Оценки: 0
Присоединился: 2011-06-15 23:23:33.783333
|
quote:
procedure TForm1.Button1Click(Sender: TObject); begin ExecAndWait('C:\Rar.exe','a -m5 A.rar C:\1.dbf',SW_SHOW); end; Не совсем правильный код. Нужно было архивировать файлик, вставил функцыю в свою прогу, winrar запускается а атрибуты не передаются. Если атрибуты содержат пробелы их нужно брать в двойные кавычки. quote:
procedure TForm1.Button1Click(Sender: TObject); begin ExecAndWait('C:\Rar.exe','a" "-m5" "A.rar" "C:\1.dbf',SW_SHOW); end;
|
|
|
RE: Создание архива в Delphi средствами Winrar - 2011-06-16 00:11:49.080000
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Это ты специально регистрировался чтобы найти топик 3(!!) - летней давности и вставить умнейший комментарий о том, как в дельфи со строками работать??
|
|
|
RE: Создание архива в Delphi средствами Winrar - 2011-08-13 03:12:37.770000
|
|
|
Monstryuga
Сообщений: 2
Оценки: 0
Присоединился: 2011-08-13 02:53:35.750000
|
Тема наверное совсем старая, но я вот по ней уже полночи голову ломаю :(. Мне нужно, открыть файл в архиве rar, который запаролен. Hужно обращение к запароленному файлу через Winrar. А потом вставить текстовые данные из txt (тот самый, запароленный), в поле Memo. Из всего вышеперечисленного, не нашел ни строчки для подобного действия :(. Пишу так: procedure TForm1.btn1Click(Sender: TObject);
begin
ExecAndWait('C:\Program Files\WinRAR\WinRAR.exe','x I:\1.rar',SW_SHOW); ; в ответ получаю открытие этого самого архива. А вот дальше - тупик :(. Перепробовал все варианты подбора (на размышления и изучения уже мозги не тянут, сутки на компе). Не могу понять принципа набора команд\параметров. Дайте наводку начинающему программисту :).
|
|
|
|
|