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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2023, 19:17   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию ZIP в D7

Как добавить модуль для zip-архивов в D7?
И какие основные процедуры для создания архива?
Kronos913 вне форума Ответить с цитированием
Старый 03.07.2023, 12:19   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Можно взять компонент ZipForge
Вот пример использования
В современных (и даже есть бесплатная) дельфи оно уже и встроенное есть

Последний раз редактировалось phomm; 03.07.2023 в 12:22.
phomm вне форума Ответить с цитированием
Старый 01.09.2023, 16:07   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Почему-то антивирус постоянно прерывает загрузку...
Kronos913 вне форума Ответить с цитированием
Старый 04.10.2023, 18:40   #4
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Возникла проблема
Код:
    Zip := TZipForge.Create(nil);
    Zip.FileName := s;
    Zip.OpenArchive;
    with Zip do begin
      if (FindFirst('*.*', ArchiveItem, faAnyFile)) then begin
        repeat
          Memo1.Lines.Add(ArchiveItem.FileName);
        until not(FindNext(ArchiveItem));
      end;
    end;
Выводятся в мемо все файлы, включая файлы в папках, но файлы в папках выводятся БЕЗ ПУТИ, только имя файла

Как решить проблему?
Kronos913 вне форума Ответить с цитированием
Старый 04.10.2023, 20:06   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

TZFArchiveItem
Цитата:
FileName is a name of the file stored within the archive.

StoredPath is a path to this file inside the archive.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.10.2023, 22:27   #6
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Это окно означает, что у меня какая-то триал-версия, или нет?
Я могу использовать модуль в программе, не опасаясь, что через время что-то перестанет работать?
Изображения
Тип файла: png изображение_2023-10-04_222632786.png (13.1 Кб, 37 просмотров)
Kronos913 вне форума Ответить с цитированием
Старый 04.10.2023, 23:24   #7
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

И какой самый прямой способ разархивировать файл?
1. Один файл
2. Все файлы архива
Kronos913 вне форума Ответить с цитированием
Старый 05.10.2023, 21:41   #8
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

А как добавить файл в архив со сменой имени?
Zip.AddFiles - добавляет файл с его изначальным именем

А как сделать так, чтобы файл перемещался?
Kronos913 вне форума Ответить с цитированием
Старый 05.10.2023, 21:43   #9
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Процедура через костыль со стримом
Есть ли лучше вариант?

Код:
Function NewZip(const ZipName: string; Files, NewNames:TStrings):boolean;
var
  ArchiveItem: TZFArchiveItem;
  Zip: TZipForge;
  i:Integer;
  st:TMemoryStream;
Begin
  i:=Min(Files.Count, NewNames.Count);
  If i>0 then begin
    try
      Zip:=TZipForge.Create(nil);
      Zip.FileName:=ZipName;
      Zip.OpenArchive(fmCreate);

      st:=TMemoryStream.Create;
      While i>0 do begin
        dec(i);
        If FileExists(Files[i]) then begin
          st.LoadFromFile(Files[i]);
          zip.AddFromStream(NewNames[i], st);
          st.Clear;
        end;
      End;
      Result:=True;
    except
      Result:=false;
    end;
    Zip.Free;
    st.Free;
  End else Result:=false;
End;
Kronos913 вне форума Ответить с цитированием
Старый 05.10.2023, 21:55   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
не опасаясь, что через время что-то перестанет работать?
Вроде в тексте ничего нет про отключение функциональности, но программа только для личного пользования.
Цитата:
Сообщение от Kronos913 Посмотреть сообщение
И какой самый прямой способ разархивировать файл?
1. Один файл
Не нашел подходящего примера.
Цитата:
Сообщение от Kronos913 Посмотреть сообщение
И какой самый прямой способ разархивировать файл?
2. Все файлы архива
Unzip a ZIP file in Delphi code sample
Цитата:
Сообщение от Kronos913 Посмотреть сообщение
А как добавить файл в архив со сменой имени?
В мануале советуют использовать OnStoreFile.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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