Как сделать ZIP?

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

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

Ответить
Alex333
новенький
Сообщения: 32
Зарегистрирован: 21.08.2011 19:14:28

Как сделать ZIP?

Сообщение Alex333 »

Народ, а есть для FreePascal что-нибудь готовое для создания ZIP - архивов? То, что можно вызвать pkzipc.exe или 7zip.exe - это я понимаю А встроенное что-нибудь есть, навроде делфишных ZipTV, VCLZip, KAZIP и пр.?
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Alex333
новенький
Сообщения: 32
Зарегистрирован: 21.08.2011 19:14:28

Сообщение Alex333 »

Это годится.
Я пока ещё не понимаю тут идеологию пакетов (особенно тех, которые не регистрируются), но методом тыка всё получилось.

Только вот теперь если я перенесу проект, например, на другую машину, на которой fparchive будет в другом каталоге - какой мой порядок действий - что и где надо будет поменять в проекте? (возможно, вопрос глупый - но уж потерпите меня маленько... :-) )

Спасибо.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Нужно для задания путей использовать системные переменные лазаруса, например $(ProjOutDir)
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Ещё есть не просто "встроенный" вариант, но даже из стандартной поставки: модуль Zipper, классы TZipper и TUnZipper. Пример использования можно посмотреть например в этой теме: http://www.freepascal.ru/forum/viewtopic.php?t=6154 , или тут: http://wiki.freepascal.org/paszlib
Alex333
новенький
Сообщения: 32
Зарегистрирован: 21.08.2011 19:14:28

Сообщение Alex333 »

Любопытно. Попробую.
А ещё - мне на глаза попался пример на VBS, вот такой:

Код: Выделить всё

Function UnZipFiles(sZipFile, sDest) 
    'Create Shell.Application object
    Set oShell = WScript.CreateObject("Shell.Application")
    'Get zip file namespace object
    Set oFolder = oShell.NameSpace(sZipFile)
    'Get list of items in zip file
    Set oItems = oFolder.Items
    'If not exists, create destination folder
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FolderExists(sDest) = 0 Then fso.CreateFolder(sDest)
    'Get destination folder namespace object
    Set oDest = oShell.NameSpace(sDest & "")
    'Extract the files
    oDest.CopyHere oItems, 64
End Function


Насколько я понимаю, он использует стандартные возможности Windows (а мне и надо именно для Windows, в данном конкретном случае).
Вот такое как-то можно обернуть в Паскаль? Или ещё лучше - паскальная обёртка для какой-нибудь из виндовых DLL, которую этот скрипт в итоге использует?

Добавлено спустя 22 минуты 45 секунд:
Да, всё же остановлюсь я на TZipper наверно. Он мне наиболее понравился. Без всякого гламура, установки, просто и эффективно.

Спасибо.
Ответить