Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2020, 23:44   #1
alex89d
Пользователь
 
Регистрация: 05.06.2014
Сообщений: 42
По умолчанию Архивирование нескольких файлов

Доброго времени суток. Использую библиотеку 7z.dll компонента sevenzip.
как через данную библиотеку заархивиравать несколько файлов их конкретной папки в один архив!?
alex89d вне форума Ответить с цитированием
Старый 23.03.2020, 07:50   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
procedure TFormMain.Button1Click(Sender: TObject);
var
  I: Integer;
  SevenZip: TSevenZip;
  SL: TStringList;
  procedure ListFileDir(Path: String; FileList: TStrings);
  var
    FList: TStringDynArray;
  begin
    if TDirectory.Exists(Path) then
    begin
      FList := TDirectory.GetFileSystemEntries(Path);
      for Path in FList do FileList.Add(Path);
    end;
  end;
begin
  SL := TStringList.Create;
  ListFileDir(ExtractFilePath(Application.ExeName) + 'here', SL);
  for I := 0 to SL.Count - 1 do
  begin
    // Папка или файл
    if (GetFileAttributes(PWideChar(SL.Strings[I])) and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY then
    begin
      // Папка
      try
        SevenZip := TSevenZip.Create(nil);
        try
          SevenZip.AddOptions := [AddRecurseDirs];
          SevenZip.AddRootDir := SL.Strings[I]; // C:\Test\
          SevenZip.LZMACompressStrength := SAVE;
          SevenZip.SZFileName := ExtractFilePath(SL.Strings[I]) + ExtractFileName(ExtractFileName(SL.Strings[I])) + '.7z'; // C:\Test\test.7z
          SevenZip.Files.Clear;
          SevenZip.Files.AddString(SL.Strings[I] + '\*.*'); // C:\Test\*.* или C:\Test\file.txt
          SevenZip.Add;
        except
        end;
      finally
        FreeAndNil(SevenZip);
      end;
    end
    else
    begin
      // Не папка
      try
        SevenZip := TSevenZip.Create(nil);
        try
          SevenZip.AddOptions := [AddRecurseDirs];
          SevenZip.AddRootDir := ExtractFilePath(SL.Strings[I]); // C:\Test\
          SevenZip.LZMACompressStrength := SAVE;
          SevenZip.SZFileName := ExtractFilePath(SL.Strings[I]) + ExtractFileName(ChangeFileExt(ExtractFileName(SL.Strings[I]), '')) + '.7z'; // C:\Test\test.7z
          SevenZip.Files.Clear;
          SevenZip.Files.AddString(SL.Strings[I]); // C:\Test\*.* или C:\Test\file.txt
          SevenZip.Add;
        except
        end;
      finally
        FreeAndNil(SevenZip);
      end;
    end;
  end;
  FreeAndNil(SL);
end;
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
rar.exe - архивирование русских файлов ramzes777 Мультимедиа в Delphi 3 16.11.2011 23:32
[QT] Архивирование файлов zip Яр|/||< (^_^) Qt и кроссплатформенное программирование С/С++ 0 15.08.2011 15:25
Повершелл архивирование файлов Ramzeskz Помощь студентам 0 07.07.2010 13:44
Архивирование файлов Altera Общие вопросы Delphi 1 08.06.2010 20:35
архивирование файлов .txt Brook Компоненты Delphi 7 03.06.2009 11:35