Как работать с zip архивами в Lazarus?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как работать с zip архивами в Lazarus?

Сообщение Leon70 » 21.02.2024 20:11:11

В Lazarus и вообще в паскале есть возможность создавать zip и разархивировать? Я уже двое суток безуспешно ищу эту информацию в интернете. Все способы, которые находятся не работают. На вики сайте freepascal предложенные способы тоже не работают выдавая кучу ошибок. Только один способ, который я нашёл на каком-то сайте сработал, но он записывает в архив весь абсолютный путь. Вручную такой архив открывается, а вот средствами паскаля нет из-за того, что в архив копируется весь путь, все папки вместе с буквой диска.
Вот этот способ.
Архивация:

Uses zipper;
var
a : TZipper;
b : TZipFileEntries;

begin
b := TZipFileEntries.Create(TZipFileEntry);
b.AddFileEntry('D:\one.txt'); //путь к архивируемому файлу
a :=TZipper.Create;
a.FileName:='D:\one.zip'; //указание пути к создаваемому архиву
a.ZipFiles(b);
a.Free;
b.Free;

readln;
end.

В архиве теперь такой путь D:\one.zip\D:\one.txt
При распаковке ничего никуда на распаковывается, но если создать архив вручную и закинуть туда файл то рабтает при помощи вот такого кода:

var
b : TUnZipper;
k : string;

begin
b := TUnzipper.Create;
k := 'D:\one.zip'; //указываем путь к архиву
try
b.FileName := k;
b.OutputPath := 'D:\too'; //указываем куда распаковать
b.Examine;
b.UnZipAllFiles;
finally
b.free;
end;
readln;
end.
Leon70
незнакомец
 
Сообщения: 5
Зарегистрирован: 02.11.2023 19:15:35

Re: Как работать с zip архивами в Lazarus?

Сообщение RRYTY » 21.02.2024 20:17:22

Почему не использовать стороний архиватор?
RRYTY
постоялец
 
Сообщения: 208
Зарегистрирован: 25.12.2021 10:00:32

Re: Как работать с zip архивами в Lazarus?

Сообщение xchgeaxeax » 21.02.2024 20:58:38

Если проблема только с путями, тогда используйте относительные пути, предварительно определив значение текущей директории (SetCurrentDir('D:\')).

И вроде как Zipper надо использовать не так
Код: Выделить всё
program project1;

uses
  SysUtils, zipper;

var
  aZipper: TZipper;

begin
  SetCurrentDir('/home/xchgeaxeax');
  aZipper   := TZipper.Create;
  aZipper.Entries.AddFileEntry('test.txt', 'name.txt');
  aZipper.Entries.AddFileEntry('/home/xchgeaxeax/test.txt', 'data.txt');
  aZipper.SaveToFile('test.zip');
  FreeAndNil(aZipper);
end.
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Re: Как работать с zip архивами в Lazarus?

Сообщение Снег Север » 21.02.2024 22:11:48

И в делфи, и в лазаре использую компоненты Abbrevia -
https://sourceforge.net/projects/tpabbrevia/files/
можно также ставить из онлайн пекедж менеджера.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Как работать с zip архивами в Lazarus?

Сообщение stikriz11 » 21.02.2024 23:24:24

Leon70 писал(а):Я уже двое суток безуспешно ищу эту информацию в интернете.

https://webdelphi.ru/2020/05/rabota-s-a ... ee-pascal/ - и тут смотрели? Начиная с TurboPower Abbrevia - вот этот пример у меня работал раньше.
stikriz11
постоялец
 
Сообщения: 126
Зарегистрирован: 04.09.2023 15:54:19

Re: Как работать с zip архивами в Lazarus?

Сообщение Seenkao » 22.02.2024 02:59:30

В ZenGL Андрей давно сделал примеры распаковки архивов, в демке 2 и почти для всех демок под Android (это низкий уровень работы с архивами! Будьте аккуратны!). Если посмотреть ZenGL и примеры на C/C++ для библиотеки Zip, то можно так же сделать и архивацию. Если нет необходимости архивировать, то можно просто использовать ZenGL или модули из него.
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: Как работать с zip архивами в Lazarus?

Сообщение Leon70 » 22.02.2024 05:11:06

xchgeaxeax писал(а):Если проблема только с путями, тогда используйте относительные пути, предварительно определив значение текущей директории (SetCurrentDir('D:')).

И вроде как Zipper надо использовать не так

Так созданный архив вообще не открывается. У меня Windows 10, на других системах не пробовал.

Добавлено спустя 1 час 21 минуту 25 секунд:
Снег Север писал(а):И в делфи, и в лазаре использую компоненты Abbrevia

Не работает в новой версии Lazarus на Windows 10, выходит куча ошибок, пишет что-то про неподдерживаемые определители. Решили отказаться от Object Pascal и Lazarus, делаем на C#.

Добавлено спустя 5 минут 9 секунд:
Всем спасибо за ответы, но так ничего и не получилось. На новой версии lazarus на Windows 10 ничего не работает. Мы решили отказаться от object pascal и lazarus и сделали выбор в пользу C#.
Pascasl и Lazarus вначале подкупили нас доступностью, простотой, тем, что для созданных приложений конечному пользователю не требуется устанавливать на компьютер никаких виртуальных машин, интерпретаторов, но для Object Pascal или ничего нет вообще, или всё безнадёжно устарело. Язык практически мёртв.
Leon70
незнакомец
 
Сообщения: 5
Зарегистрирован: 02.11.2023 19:15:35

Re: Как работать с zip архивами в Lazarus?

Сообщение iskander » 22.02.2024 09:09:00

Leon70 писал(а):Всем спасибо за ответы, но так ничего и не получилось.

Хм, вот это
Код: Выделить всё
program test_pack;
{$mode objfpc}{$h+}
uses
  Classes, SysUtils, FileUtil, Zipper;
var
  files: TStrings;
begin
  Files := FindAllFiles(GetCurrentDir, '*.txt');
  try
    TZipper.Zip('my_arc.zip', files);
  finally
    Files.Free;
  end;
end.

упаковывает все найденные в текущей и вложенных папках текстовые файлы в архив my_arc.zip.
А вот это
Код: Выделить всё
program test_unpack;
{$mode objfpc}{$h+}
uses
  SysUtils, Zipper;
begin
  with TUnZipper.Create do
    try
      FileName := 'my_arc.zip';
      OutputPath := 'my_files';
      Flat := True;
      UnZipAllFiles;
    finally
      Free;
    end;
end.

распаковывает архив в папку my_files.
Так в чём проблема?
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34

Re: Как работать с zip архивами в Lazarus?

Сообщение stikriz11 » 22.02.2024 10:03:23

Leon70 писал(а): Мы решили отказаться от object pascal и lazarus и сделали выбор в пользу C#.

Весь пост ради этой фразы?
stikriz11
постоялец
 
Сообщения: 126
Зарегистрирован: 04.09.2023 15:54:19

Re: Как работать с zip архивами в Lazarus?

Сообщение xchgeaxeax » 22.02.2024 11:23:14

Забавно. Ему привели рабочий пример для создания архива с помощью zipper, а он такой - "мои кривые руки слишком кривые, чтобы его скопировать и попробовать и теперь я беру кривой шарп".
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Re: Как работать с zip архивами в Lazarus?

Сообщение Снег Север » 23.02.2024 17:40:55

Leon70 хм, у меня windows 11 pro x64, lazarus 3.0 FPC 3.2.2 - стабильная последняя версия, поставил со своей ссылки Abbrevia 5.2 - ни единой ошибки и под х32 и под х64 лазарем.
Что я делаю не так? :mrgreen:
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Как работать с zip архивами в Lazarus?

Сообщение Sharfik » 24.02.2024 22:07:17

Leon70 писал(а):Всем спасибо за ответы, но так ничего и не получилось. На новой версии lazarus на Windows 10 ничего не работает. Мы решили отказаться от object pascal и lazarus и сделали выбор в пользу C#.
Pascasl и Lazarus вначале подкупили нас доступностью, простотой, тем, что для созданных приложений конечному пользователю не требуется устанавливать на компьютер никаких виртуальных машин, интерпретаторов, но для Object Pascal или ничего нет вообще, или всё безнадёжно устарело. Язык практически мёртв.

Скажите проще - вы даже не пытались. Я не программист профессиональный, и то разобрался как Zipper использовать. Или на худой конец связку 7zip библиотеки. И Wiki сам подправлял по Zipper, чтобы показать людям как с кирилицей работать на старый версиях FPC. Не хотите развиваться и решать задачу ваше право, только чушь не пишите подобную.
Ваш C# даже компилятора с IDE не имеет нормального чтобы установить и не конопатить себе мозги, все колхозно по кускам собирать надо, и при этом он живой? При том что он даже не предназначен для работы с БД. А на FPC построено две среды полноценные разработки, которые ребенок может установить и начать что то создавать.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Как работать с zip архивами в Lazarus?

Сообщение SSerge » 25.02.2024 06:20:40

Sharfik писал(а):Ваш C# даже компилятора с IDE не имеет нормального чтобы установить и не конопатить себе мозги, все колхозно по кускам собирать надо

Э... А как же visual studio?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Как работать с zip архивами в Lazarus?

Сообщение Sharfik » 26.02.2024 03:03:02

SSerge писал(а):Э... А как же visual studio?

Я имел ввиду легально и без костылей доступные. Я с VS очень мало знаком, в плане разработки. В силу следующей истории. В районе 16ого года знакомясь с Revit и его API рассматривал как можно разрабатывать под него плагины, и был сильно огорчен ориентацией на C# (Renga у Аскон сейчас такая же). Как выяснилось(на тот момент) для разработки были VS и VS Express и под последним скомпилировать плагин было не реально по ограничениям среды. А путь использования взломанного ПО не мой. Хоть и не могу зарабатывать на своем ПО, но и использовать взломанное - не уважать себя. Только если нет совсем альтернатив, тогда еще как то понять могу. Сейчас(полюбопытствовал только что) как вижу Express нет совсем, и есть Visual Studio Community. Может стало проще в сборках между проектами сделанными на разных версиях, но это уже третья реализация за 20 лет среды программирования у MS. Не многовато ли? Напоминает Delphi/Turbo Delphi/Turbo Delphi Express в который хозяева поиграли и бросили подсевших на произвол судьбы. Lazarus в этом плане выглядит хоть как то надежнее, стабильнее, и не зависит от маркетинговой политики продаж. Был бы профессиональным разработчиком под продукты MS - VS был бы актуален, а так нафиг надо строить свою жизнь(тратить время личное) на шатком продукте не ориентированном на долговременную стабильность понятий и политики. Плюс не заметил кроссплатформенности особой.
Тут Eclipse IDE(изучал с ним Java) с навесками со стороны выглядит куда интереснее даже, но опять же - не сильно удобно будет переползать если что на Linux. А lazarus так или иначе идет с " подстилкой из соломки" на черный день фанатов Win.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Как работать с zip архивами в Lazarus?

Сообщение sts » 26.02.2024 11:50:46

Sharfik писал(а): легально и без костылей доступные.

ну это вообще не аргумент. то что за иде надо платить это нормально, вон под яву давно есть аж две халявные иде, а люди предпочитают покупать третью, хотя по возможностям те две, особенно на начальном этапе продвижения третьей, ничем не уступали.
sts
постоялец
 
Сообщения: 431
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru