Современные решения

для защиты Windows приложений

и восстановления исходного кода
Автор: Antiloop Дата публикации: 10.6.04

Zip-Zap. Как заZIPить и заUNZIPить файл


Для большинства своих случаев я пользуюсь архиватором WinZip самой последней версии, потому что он удобный, а главное - красивый. Ну и еще потому что формат архивов Zip самый популярный во всех частях Сети. (Хотя RARит?ты еще кое-где встречаются).

Так вот, вместо того, чтобы восхвалять этот архиватор во всех инстанциях, попробуем лучше начать юзать его по полной программе.

Когда я делал одну игрушку (это было очень давно) у меня получилось огромное количество зауковых файлов и просто немеренное количество графики. Общее количество файлов зашкаливало за две сотни (как уже говорилось это было давно, я был начитан всяких умных книжек и понятие не имел о методах Clip и тому подобных). Тогда-то у меня и возникла умная мысль заархивировать все это хозяйство, а затем, когда программы запускается - разархивировать куда-нибудь типа Windows\Temp и пользоваться. После недели издевательств над файлом unzip.exe в попытках сотворить хоть что-нибудь, я узнал как запускать программы с помощью функций Shell, ShellExecute, запускать окно во всевозможных его состояниях... вобщем я много что узнал, только разархивировать у меня ничего не получилось.

Ну потом у меня было еще много разных умных мыслей и я постепенно забыл о всех этих позорных корчах, переключившись на более благородные деяния. И так я сидел до сего момента, пока не встретил на конференции улиц VB вопрос про архивацию файлов, который заставил меня вспомнить об этой моей вековой давности проблеме (спасибо, Vigrin).

Покопавшись в своих залежах ActiveX я натолкнулся на одну библиотеку, а чуть позже еще на два контрола. Библиотека мне не понравилась, поэтому описывать ее не буду.

Скажу сразу: откуда контролы ко мне попали я не помню, поэтому и благодарности от меня не дождетесь :). Производители контролов - немецкие братья по разуму, только версия контролов меньше единички, что подразумевает некое количество багов.

Zip

Все элементарно. Свойству ZipFileName должно быть присвоено полное имя файла, затем вызываем метод AddFileToZip с указанным именем файла для архивации и готово! Повторяем второй пункт до победного конца. При этом, контрол выдает сообщение путем события ZipMessage(ByVal Message As String). Самые любопытные могут этот Message распечатать.

В добавок, контрол имеет полезные булевы свойства, которые вы можете наблюдать в диалоге Add To Archive WinZip'а. Это:
NoPathInfo - сохранение исходного пути файла.
NoDirEntries - вложенные директории
System - системные файлы
и другие.

Unzip

Тоже просто. Сначала свойству Filename присваиваем имя архива. Затем, свойству DestinationDir имя папки назначения. Вот затем будет чуточку посложнее. Если хотите разархивировать все и сразу, то примените метод UnzipAll. Если один файл - то UnzipFile и укажите имя файла. В чем сложность? А если пользователь не знает имени файла? Используйте метод ListAllFiles. При этом у контрола начнется излияние информации через событие:

VFunzip1_FileInfo(ByVal TotalSize As Long, ByVal FileSize As Long, ByVal Factor As Integer, _ ByVal Month As Integer, ByVal Day As Integer, ByVal Year As Integer, ByVal Hour As Integer, _ ByVal Minute As Integer, ByVal Filename As String, ByVal Path As String, _ ByVal Method As String, ByVal CRC As Long, ByVal Crypt As Boolean)

Если приглядеться, можно найти здесь много разных полезных свойств: имя файла, дату его создания, размеры, сжатый и исходный и еще много чего.

Сколько в архиве файлов, столько раз будет происходить это событие. Так что не мешкайте, и составляйте список файлов и их свойств.

Так что используя эти два контрола, вы можете не дожидаясь официального выхода сами создать следующую версию WinZip'а, написав ее на VB!

Приятного программирования.

Комментарии

отсутствуют

Добавление комментария


Ваше имя (на форуме):

Ваш пароль (на форуме):

Комментарии могут добавлять только пользователи,
зарегистрированные на форуме данного сайта. Если Вы не
зарегистрированы, то сначала зарегистрируйтесь тут

Комментарий: