| 
| 
 | Вопрос # 1 075/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Как программно заархивировать папку стандартными средствами виндовса  из формы программы, если архиватор не стоит, например?
 
|  |   Вопрос задал: Ilia Ermakov (статус: 1-ый класс)Вопрос отправлен: 2 ноября 2007, 19:45
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Николай Рубан Здравствуйте, Ilia Ermakov!
 Данную операцию можно с использованием стандартной утилиты ntbackup, например так (где d:file.txt - имя файла который упаковываем, d:arc.bkf - имя соответствующего архива):
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 ShellExecute(
 Handle,
 nil,
 'ntbackup', //сама команда
 ' backup d:file.txt /j "New archiv..." /f "d:arc.bkf"', //параметры команды
 nil,
 SW_SHOWNORMAL);
 end;
 
 Единственное для работы   ShellExecute необходимо подключить модуль ShellApi (uses shellapi).
 Более детально параметры команды Вы сможете прочитать если в командной строке набирете: "ntbackup /?" либо читайте в приложении.
 
 P.S. (замечание) только такой метод архивации оставляет желать лучшего (мягко говоря не архиватор, а просто жуть - но и создавалась данная утелита изначально для других целей) и я лично не советую использовать его, лучше установите все тотже winrar и используйте его, кстати он так же поддерживает работу из командной строки.
 
 Good Luck!!!
 Приложение:Переключить в обычный режим  Ntbackup      systemstate                      /A  /V:{yes|no}  /R:{yes|no}  /L:{f|s|n}    /RS:{yes|no}  /HC:{on|off}  /SNAP:{on|off}    /?                                                
|  | Ответ отправил: Николай Рубан (статус: 10-ый класс)Время отправки: 2 ноября 2007, 23:00
 
 |  Ответ #2. Отвечает эксперт: Feniks Здравствуйте, Ilia Ermakov!В Delphi 7 официально включена поддержка библиотеки сжатия ZLib. Если у вас более старшая версия посмотрите модули ZLib в дистрибутиве среды (они должны быть на диске, но подключать придется самому).
 
 Библиотеки под разные платформы, среды разработок и документация на сайте www.gzip.org/zlib.
 
 Степень сжатия превосходит алгоритм zip. Максимальная степень сжатия по алгоритму ZLib приближается к степени сжатия упаковщиком RAR.
 
 Модули Zlib, ZlibConst.
 
 При использовании необходимо подключить в описании Uses модуль ZLib.
 
 пример использования:
 Компрессия одного потока в другой:
 
 ComressStream( aSource, aTarget : TStream; compressionRate : TCompressionLevel );
var comprStream : TCompressionStream;
begin
  // compression level : (clNone, clFastest, clDefault, clMax)
  comprStream := TCompressionStream.Create( compressionRate, aTarget );
try
  comprStream.CopyFrom( aSource, aSource.Size );
  comprStream.CompressionRate;
finally
  comprStream.Free;
End;
End; Декомпрессия одного потока в другой:
 
 DecompressStream(aSource, aTarget: TStream);
var decompStream : TDecompressionStream;
          nRead : Integer;
         buffer : array[0..1023] of Char;
begin
  decompStream := TDecompressionStream.Create( aSource );
try
   repeat
     nRead:=decompStream.Read( buffer, 1024 );
     aTarget.Write( buffer, nRead );
   Until nRead = 0;
finally
  decompStream.Free;
End;
End;Автор RoboSol
 ©Drkb::03193
 Взято из http://forum.sources.ru
 
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 5 ноября 2007, 10:14
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |