|
Delphi Лозовский Александр Xakep, номер #054, стр. 054-084-4 Кодинг forever Вначале разберемся с открытием архива и экранизацией его интимных тайн :). Для этого взгляни онклик первой кнопки (с троеточием): Как всегда все просто и занудно. Если пользователь выбрал имя файла, мы передаем его ZipTv, присваиваем маску *.* и выводим в ListBox2 файлы по этой маске. То есть все файлы из архива. Затем выводим дополнительную информацию об архиве: количество файлов, исходный размер данных, пакованный размер и, наконец, compress ratio. Дело в том, что разработчики компонента придумали для этой цели целую функцию CalcRatio. Но до ее использования я никогда не унижусь :). Принять исходный размер за 100% и вычислить, сколько же осталось, это под силу даже школьнику из приюта для олигофренов. И это будет одна и та же строчка кода, так что тяга к упрощению ущемлена не будет :). Архивариус В первом listbox'е ты сможешь составить список файлов, подлежащих архивации. В этом нам поможет Edit2, Button2 и Button3 (которая "Добавить!", она добавляет содержимое Edit2 в ListBox1). Button2 же просто активирует OpenDialog и вводит имя файла в Edit2. Вот как это делается: OnClick Button2: ListBox1.Items.Add(Edit2.Text); OnClick Button3: ListBox1.Items.Add(Edit2.Text); Впрочем, маски (типа *.exe, ??e.doc) тебе придется набивать в Edit2 уже вручную. Посмотрим на ОнКлик кнопки "Архивировать": Переменная i будет содержать количество запакованных файлов. Далее мы определяем имя архива, соотносим содержимое ListBox1 со свойством FileSpec и вставляем пароль из Edit3. Запускаем процесс и выводим результат с помощью ShowMessage. Разархивариус Вот онклик кнопки "Разархивировать": Здесь все очень похоже на паковку, кроме нового свойства ExtractDir, данные для которого берутся из Edit4. Создаем Создать SFX архив из обычного не просто, а очень просто. Делается это в 3 строчки кода. Я имею в виду вот эти строчки: MakeSfx1.ArchiveFile:= Edit1.Text; MakeSfx1.TargetFile:= Edit5.Text; IF MakeSfx1.CreateSfx then ShowMessage ('Архив создан!'); Это и есть Онклик от кнопочки "Создать SFX". Путь к конечному файлу будет определяться содержимым Edit5. Не забудь, что по умолчанию SFX файлы ищутся в системном каталоге. Конвертируем Вот как это делается: Если ты внимательно читал теорию, то уже все понял: здесь я последовательно определяю исходный и конечный файлы, выбираю способ конвертации. Вот, собственно, и весь пример. Самое время чуть-чуть его модернизировать. Не зря же я положил на форму 2 TProgressBar :). Создай для компонента TZip1 событие OnProgress и вбей туда следующее: ProgressBar1.Position := ProgressByFile; ProgressBar1.Update; ProgressBar2.Position := ProgressByArchive; ProgressBar2.Update; Эти простые строчки обеспечат пользователю наблюдение за двумя важными процессами: прогрессом в архивации текущего файла и архива в целом. Клинические испытания Я запустил нашу прогу и открыл один из своих архивов, получив краткую информацию о нем. Затем у меня появилось желание добавить в него файлик, что я и сделал с неплохим результатом - compress ratio был что-то около 34%. |