Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Работа с *.zip- и *.rar-архивами


Автор: BreakPointMAN 6.7.2005, 21:01
Собственно САБЖ. Если кто сталкивался в своей работе, plz, подскажите... smile
Можно две разные библиотечки...
Среда: Borland C++ Builder 6.

Должно поддерживаться (как минимум):
- распаковка и запаковка ZIP (с поддержкой паролей)
- распаковка RAR


2Moderators: если тема не очень подходит в этот раздел, не возражаю, если она будет перемещена... %) сорри коли чаво...

Автор: NoeR 7.7.2005, 00:46
Цитата
распаковка и запаковка ZIP (с поддержкой паролей)

На торри нет поищи "ZIP"...
Цитата
распаковка RAR

У них есть спец длл, найди как ею пользоваться, я пробовал только на Делфи, но до пасса так и не дошел smile
Цитата
2Moderators: если тема не очень подходит в этот раздел, не возражаю, если она будет перемещена... %) сорри коли чаво...

С чего эт она не подходит =)

Автор: p0s0l 9.7.2005, 00:04
Для ZIP - ZipForge хороший компонент для BC и Delphi:
http://www.componentace.com/zip_component_zip_delphi_zipforge.htm

Автор: BreakPointMAN 9.7.2005, 00:32
2 NoeR & p0s0l большое спасибо! smile

Автор: CLIPSA 17.1.2007, 01:28
Используя компонент ZIP - ZipForge в программе , то моя программа будет работать и на других компьютерах?  Или нет? Т.е. он не привязывается к конкретному компьютеру? 
Потому что там две варианта Personal Edition(бесплатный) и Commercial Edition. Немогу понять, что значит Personal Edition . В чём ограничение то заключается?  

Автор: CLIPSA 17.1.2007, 01:58
По этой ссылке http://prdownloads.sourceforge.net/sevenzi...42.zip?download  находится файл 7za.exe. При помощи которго можно распаковывать и запаковывать из комндной строки.
Вы не знаете как это можно сделать программно т.е. какой код в программе нужен чтоб с комндную строку запускать? и чтоб не запускалось чёрное окно. smile 

Автор: zkv 17.1.2007, 03:47
Цитата(CLIPSA @  17.1.2007,  01:58 Найти цитируемый пост)
Вы не знаете как это можно сделать программно т.е. какой код в программе нужен чтоб с комндную строку запускать? и чтоб не запускалось чёрное окно.

пример:
Код

ShellExecute(NULL, "open", "7za.exe", " x archive.zip", NULL, SW_HIDE );
//подробнее по параметрам запуска 7za смотрим справку :)

Автор: Bima 17.1.2007, 07:05
Цитата

Используя компонент ZIP - ZipForge в программе , то моя программа будет работать и на других компьютерах?  Или нет? Т.е. он не привязывается к конкретному компьютеру? 
Потому что там две варианта Personal Edition(бесплатный) и Commercial Edition. Немогу понять, что значит Personal Edition . В чём ограничение то заключается?

Качал с сайта, но не 7za.exe, а файл zf_b6_274.zip (2,244 мб), там находится инсталяшка для ВСВ6. вроде бесплатная, потому что не платил ничего и распаковывает на разных компьютерах и денег не требует. Единственное, что всегда раздражает, при запуске ВСВ выдает MessageBox, типа About, пока не щелкнешь на ОК, ВСВ не откроется.

Добавлено @ 07:07 
Цитата(zkv @  17.1.2007,  04:47 Найти цитируемый пост)
пример:

код C++ Builder
ShellExecute(NULL, "open", "7za.exe", " x archive.zip", NULL, SW_HIDE );
//подробнее по параметрам запуска 7za смотрим справку smile


Зачем тогда качать этот компонент. Можно воспользоваться командной строкой любого архиватора, буть то Zip или Rar

Автор: CLIPSA 17.1.2007, 12:32
Компоненты в данной ситуации  получается вобще ненужны. И MessageBox, типа About не выскаивает smile . 
Цитата(zkv @  17.1.2007,  03:47 Найти цитируемый пост)
ShellExecute(NULL, "open", "7za.exe", " x archive.zip", NULL, SW_HIDE );

А при этом коде чёрное окно запускается?

Автор: Romikgy 17.1.2007, 12:52
Цитата(CLIPSA @  17.1.2007,  11:32 Найти цитируемый пост)
SW_HIDE

имхо 

Цитата(CLIPSA @  17.1.2007,  11:32 Найти цитируемый пост)
А при этом коде чёрное окно запускается?

нет

Автор: Bima 17.1.2007, 12:59
Цитата

Компоненты в данной ситуации  получается вобще ненужны. И MessageBox, типа About не выскаивает 

не нужны, но нужно с программой таскать 7za.exe, что не есть гуд (для меня).

MessageBox выскакивает только при запуске среды разработки ВСВ, один раз перед началом, а потом он не появляется. В скомпилированной программе, этого About нет (если конечно вы сами туда его не запихнете)

Добавлено @ 13:01 
еще, при работе с программой 7za.exe, вы процесс не контролируете. Вдруг архив поврежден, и что тогда???

Автор: CLIPSA 17.1.2007, 13:21
Цитата(Bima @  17.1.2007,  12:59 Найти цитируемый пост)
таскать 7za.exe
 он 2Гб?  smile 



Автор: Bima 17.1.2007, 13:40
Цитата

он 2Гб?


Незнаю, ваша ссылка битая, так что это все гипотезы

Автор: Romikgy 17.1.2007, 14:00
http://www.7-zip.org/

Автор: Bima 17.1.2007, 14:10
Если идти по этому пути, то я говорил, что лучше использовать WinRAR и WinZip... хотя можно также Pkunzip привязать.
Это не программирование, а вызов соответствующего архиватора с параметрами командной строки (хоть и скрытно)!!!

Автор: zkv 17.1.2007, 15:30
Цитата(Bima @  17.1.2007,  14:10 Найти цитируемый пост)
Это не программирование, а вызов соответствующего архиватора с параметрами командной строки (хоть и скрытно)!!! 

smile если продолжить вашу мысль, то использование WinAPI тоже не программирование, а только лишь вызовы интерфейсных функций системы с некоторыми параметрами (даже не скрытно)!!!

Цитата(Bima @  17.1.2007,  14:10 Найти цитируемый пост)
Если идти по этому пути, то я говорил, что лучше использовать WinRAR и WinZip... хотя можно также Pkunzip привязать.

а чем это лучше? А что у них говорит лицензия?

Цитата(CLIPSA @  17.1.2007,  12:32 Найти цитируемый пост)

А при этом коде чёрное окно запускается?

CLIPSA,  нет, но в диспетчере задач будет видно. Пока будешь отлаживать советую запускать через cmd /k ... и SW_SHOW, и если имя архива будет содержать пробелы не забудь передать его в кавычках. И  предварительно проверь, все ли необходимые форматы архивов поддерживаются (в справке).

Автор: Bima 17.1.2007, 15:56
Цитата

если продолжить вашу мысль, то использование WinAPI тоже не программирование, а только лишь вызовы интерфейсных функций системы с некоторыми параметрами (даже не скрытно)!!!

Может сначала лучше взглянуть на тему!!!
могу напомнить: Работа с *.zip- и *.rar-архивами, Разыскивается библиотечка или компонент. В данном случае речь идет о том, что можно встроить в программу, а не о том, как запускать внешние процессы путем командной строки.

Если продолжить вашу мысль, то программировать можно путем написания bat файлов для распаковки файлов, и программу даже писать не стоит, лишнее нагромождение и нужен компилятор.

Цитата

а чем это лучше? А что у них говорит лицензия?

Pkunzip бесплатная вещь, еще со времен DOS, а у WinRAR можно дернуть программу unrar (консольная версия программы и запускается везде).
вот что она пишет при запуске:
Код

UNRAR 3.51 freeware      Авторские права (c) 1993-2005 Александр Рошал

Использование: UNRAR <команда> -<ключ 1> -<ключ N> <архив> <файлы...>
               <@файл-список...> <путь_для_извлечения\>

<Команды>
  e             Извлечь файлы в текущий каталог
и так далее

так что с лицензией все нормально.

Автор: zkv 17.1.2007, 16:07
Цитата(Bima @  17.1.2007,  15:56 Найти цитируемый пост)
Если продолжить вашу мысль, то программировать можно путем написания bat файлов для распаковки файлов, и программу даже писать не стоит, лишнее нагромождение и нужен компилятор.

в случае, если такое решение будет удовлетворять всем требованиям заказчика, то почему бы и нет? (При условии, что это делается быстрее, и проще). Решение должно быть оптимальным, любые крайности - зло smile. 

Цитата(Bima @  17.1.2007,  12:59 Найти цитируемый пост)
еще, при работе с программой 7za.exe, вы процесс не контролируете. Вдруг архив поврежден, и что тогда??? 

а тогда юзаем GetExitCodeProcess(), и смотрим код возврата (правда, судя по разговорам, придется использовать ShellExecuteEx() )

Автор: CLIPSA 17.1.2007, 18:09
Цитата(zkv @  17.1.2007,  16:07 Найти цитируемый пост)
GetExitCodeProcess(), 

А можно поподробней про GetExitCodeProcess(). smile 



Цитата(Bima @  17.1.2007,  15:56 Найти цитируемый пост)
В данном случае речь идет о том, что можно встроить в программу, а не о том, как запускать внешние процессы путем командной строки.

Ну мне так удобней, потомучто меньше мороки и ещё я собираюсь свою программу переносить на Visual C++ (а ShellExecuteEx() он и в Африке ShellExecuteEx)

Автор: zkv 17.1.2007, 18:29
Цитата(CLIPSA @  17.1.2007,  18:09 Найти цитируемый пост)
А можно поподробней про GetExitCodeProcess()

в кратце все тоже самое, только используем ShellExecuteEx() (для этого надо заполнить хитрую структуру, которую она принимает в качестве параметра, я не делал, примера у меня нет, но поиск и МСДН помогут), ждем завершения работа архиватора, вызываем GetExitCodeProcess(), куда передаем хэндл завершенного процесса, получаем код возврата. Кстати, контролировать завершение процесса можно с помощью возвращаемого значения GetExitCodeProcess(). Вообщем есть над чем поработать smile

PS кстати в разделе по Визуалу этот вопрос обсуждается сейчас. 

Автор: _pussbb 2.2.2007, 23:01
А никто не работал с dll 7z-ипа мне бы пример как правильно вызывать функции с этих библиотек. 
с файла readme
Код


7-Zip Extra is package of extra modules of 7-Zip. 

7-Zip Copyright (C) 1999-2006 Igor Pavlov.

This package contains the following files:

7za.dll   - library for working with 7z archives.
7zxa.dll  - library for extracting from 7z archives.
7zS.sfx   - SFX module for installers
7zSD.sfx  - SFX module for installers (uses msvcrt.dll)
7zr.exe   - reduced version of console program 7za.exe
copying.txt  - GNU LGPL
readme.txt   - This file
Far\      - Plugin for FAR manager
Installer\  - Files to compress installers
Features of 7za.dll: 
  - Supporting 7z format;
  - Built encoders: LZMA, PPMD, BCJ, BCJ2, COPY, AES-256 Encryption.
  - Built decoders: LZMA, PPMD, BCJ, BCJ2, COPY, AES-256 Encryption, BZip2, Deflate.
  
7zxa.dll supports only decoding from .7z archives.

Автор: Romikgy 2.2.2007, 23:26
А SDK их качал?
И вообще есть вопрос создай свою тему!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)