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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2019, 21:04   #1
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию Упаковка папок в архив используя ZipForge (Delphi 7)

Здравствуйте, подскажите пожалуйста как упаковать все папки и файлы находящиеся в каталоге в отдельные архивы используя ZipForge?
Получаю пути к папкам и файлам в каталоге например так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  searchResult : TSearchRec;
begin
  if FindFirst(edit1.text+'*.*', faAnyFile, searchResult) = 0 then
  begin
    repeat
    if (searchResult.Name <> '.') and (searchResult.Name <> '..') then  // игнорировать служебные папки
        begin
          listbox1.Items.Add(edit1.text+searchResult.Name);
      end;
    until FindNext(searchResult) <> 0;
FindClose(searchResult);
  end;
  end;
Допустим в каталоге 10 папок и 5 файлов, нужно получить 10 архивов с папками и 5 архивов с файлами, всего 15 отдельных архивов.
Количество и имена папок и файлов в выбранном каталоге постоянно меняется.
Заранее благодарю.

Последний раз редактировалось Alex711; 16.03.2019 в 09:38.
Alex711 вне форума Ответить с цитированием
Старый 16.03.2019, 11:57   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

На 7zip
Код:
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;
Вложения
Тип файла: zip here.zip (2.4 Кб, 17 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 16.03.2019, 16:16   #3
Alex711
Пользователь
 
Регистрация: 21.09.2018
Сообщений: 99
По умолчанию

Спасибо конечно, но с SevenZip ни разу не сталкивался, можно ссылочку где скачать.
Alex711 вне форума Ответить с цитированием
Старый 16.03.2019, 21:22   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

SevenZipVCL 0.76
Вложения
Тип файла: zip SevenZipVCL 0.76 Delphi 7 - XE10.2.zip (692.7 Кб, 24 просмотров)
Shouldercannon вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пороноя. поставил пароль на архив из 9 цифр. какова вроятность, что могут выскрыть запараленный архив..? Стас1995 Безопасность, Шифрование 9 02.04.2017 08:40
Как распаковать самораспаковывающийся архив delphi bilibian Общие вопросы Delphi 32 01.02.2014 17:30
Масштабный архив исходников WinAPI на DELPHI! navodri Win Api 1 26.06.2013 10:59
Упаковка/распаковка .dat файлов (Delphi) $sky$ Помощь студентам 0 06.02.2012 20:53
обновление в блоге - Упаковка папок c помощью ZLib. Pblog Обсуждение статей 0 27.05.2007 03:17