> .:: Коллекция демонстрационных программ от Rouse_ ::.
Главная страница : Сеть : Windows API : Компоненты : Разное : Книги : Полезные ссылки : О сайте
 
Работа с ZIP архивами. 4 марта 2011 года



В последнее время по работе я часто начал сталкиваться с задачами требующими работу с архивами.
Формат архива для решения задач был выбран самый распространенный - ZIP и я начал искать уже реализованные сторонние классы для работы с архивами в этом формате.
Изначально требования были просты: мне требовался компонент (набор классов) который не тянул бы за собой сторонние библиотеки.
Таких компонентов нашлось достаточно много.
Но потом задачи стали усложнятся и соответственно требования к компонентам изменились.
Через какое-то время мне нужен был компонент умеющий паковать и распаковывать файлы больших размеров.
Еще через какое-то время потребовалось чтобы при этом он не отьедал почти всю память у приложения.
В конце концов мне потребовалось что бы он умел работать с зашифрованными архивами, плюс до кучи (т.к. работать приходится в основном с XML - т.е. текстом) чтобы он поддерживал алгоритм сжатия PPMD.
В итоге у меня остался один более-менее приемлимый вариант, но стоящий 400 долларов и не умеющий PPMD (sic).
Пришлось делать все самому...

В архиве исходники, техническая сопроводиловка, 5 демо примеров и тест производительности класса.

Обновление 31 августа 2015 года.
Версия 1.0.11
- Добавлен класс TFWZipModifier, позволяющий производить любые изменения архива "на лету" и не требующий перепаковки данных.
- Небольшие изменения в классе FWZipReader, неверно читался пустой архив, из-за некоретного детектирования END_OF_CENTRAL_DIR_SIGNATURE
- Исправлена небольшая ошибка при проверке архива в случае если проверялся большой файл (неверно рассчитывались проценты)
- Поправлен неверный режим создания TFileStream в процедуре TFWZipReader.LoadFromFile
Реализовано предложение от Максима Буянова:
- К классу TFWZipReader добавлено свойство DefaultDuplicateAction, позволяющее назначить действие по умолчанию при обнаружении дубликатов распаковываемых файлов.
Исправлены ошибки обнаруженные Максимом Минеевым и реализовано новое предложение:
- Исправлена ошибка рабты с граничными значениями MAXDWORD при которых не всегда правильно принималось решение о использовании ZIP64
- В LocalDirectory теперь пишется информация о ZIP64 (ибо некоторые архиваторы почему-то не хотят ее читать из CentralDirectory)
- Добавлен перекрытый метод Extract к классу TFWZipReaderItem позволяющий изменять имя распаковываемого файла
Исправлена ошибка найденная Дмитрием Мозулёвым:
- При использовании UTF8 происходил RangeCheckError в процедуре TFWZipReaderItem.InitFromStream при проверке имени файла на принадлежность директории.

Размер архива: 691 024 байт
Скачать: fwzip.zip




Составной PopupMenu. 15 апреля 2010 года



Очень простой по сути своей компонент, реализующий составное меню.
Принцип работы прост: в дезайнтайме представляет из себя аналог панели, на которую накидываются контролы, в рантайме отображает их в виде всплывающего меню.
Демка работы приложена.

Размер архива: 252 055 байт
Скачать: fwpopuppanel.zip


Альтернативная реализация SysListView32. 15 апреля 2010 года



Данный компонент писался как альтернатива стандартному ListView.
Оригинальный ListView меня не устраивал тем, что он не поддерживает полный функционал SysListView32 документированный в MSDN.
В данном компоненте я постарался реализовать все документированные (и не очень) возможности оригинального комтрола, как то тайлы, группы, расширенный функционал заголовка и т.п.
Компонент полностью рабочий, более того используется в повседневной работе вместо классического ListView уже примерно полтора года, так что явных глюков быть по идее не должно (учитывая обьем кода).
Выкладывается с разрешения технического директора :)

Последнее обновление 21 Марта 2011 года.
Версия 1.53
Добавлена поддержка Delphi 2010 и что-то исправлено по мелочи.

Размер архива: 43 960 байт
Скачать: gslistview.zip


Класс для отображения пути. 15 апреля 2010 года



Программный класс для вывода пути в стиле Vista/Windows 7
Оригинальный контрол, используемый в данных ОС представляет из тебя стандартный ToolbarWindow32 отрисованный с применением стилей, поэтому пришлось писать с нуля, т.к. такую отрисовку будет достаточно проблематично отобразить на ХР и ниже.
Исходный код показывает принципы написания составных компонентов.
В частности данный компонент может работать как в режиме графического отображения, так и в режимах EDIT и COMBOBOX.
Демка работы приложена.

Обновление 07 июля 2011 года.
Версия 1.06
Исправление очередной пачки ошибок найденных VahaC
1. исправлена ошибка выбора элемента автоподстановки при помощи мышки
2. исправлена ошибка отрисовки иконок по неверному индексу (EListError)
3. исправлена неверная отрисовка с DPI отличным от 100%
4. добавлена отрисовка текущего элемента из списка истории при выборе его мышкой (по аналогии с выбором его стрелками)
5. по просьбе Евгения (DeCoding) добавлена реакция на прокрутку скрола мышкой, а так-же правильное скролирование при перемещении по списку при помощи стрелок.

Размер архива: 433 730 байт
Скачать: fwvistapathedit.zip


Класс для вывода отчета. 20 октября 2006 года



Программный класс для вывода отчета о текущей работе.
Полностью кастомный, никаких особых прелестей в нем нет, работает и слава богу :)
Демка работы приложена.

Последнее обновление 28 февраля 2007 года.
Версия 1.01
Небольшая доработка класса. Добавлены бордюр (странно что сразу не сделал) и поддержка WM_MOUSEWHEEL.
Немного исправленна отрисовка.

Размер архива: 12 952 байт
Скачать: fwreportview.zip


Отображение иконки в любом ее формате. 9 октября 2006 года



Иконки с альфаканалами всех возможных разрешений давно уже доступны в интернете.
Проблема в том, что стандартные средства дельфи не позволяют отобразить такие иконки во всей их красоте. С одной стороны это правильно, ведь необходимо обеспечить правильную работу программы под всеми системами, а стандартными средствами это не получиться сделать. Т.к. DrawIconEx под 98 не выведет альфаканал, CreateIcon вернет ошибку при создании иконки размером 256 на 256, а AlphaBlend вообще частенько сыплет артефактами изображения под всеми системами без исключения.
Этот компонент решает данные проблемы и нормально выводит иконку во всех ее форматах.
Все узкие места компонента я постарался тщательно прокоментировать.

Последнее обновление 26 апреля 2011 года.
Версия 1.09
Добавлена поддержка Delphi 2010
Исправлены проблемы с Windows Vista

Размер архива: 190 396 байт (включает 2 иконки больших размеров с альфаканалом)
Скачать: fwiconex.zip


Работа с системным треем. 12 декабря 2005 года



Еще один компонент. На этот раз работает с системным треем.
Писался для себя, за все время его использования ни разу небыло нареканий.
Берет на себя, помимо отображения иконки в трее, ее анимацию. Также управляет главной формой приложения.
Перехватывает скрытие/минимизацию формы. Также полезные мелочи наподобие горячей клавиши и
работа с BallonHint.

Обновление 7 июля 2011 года.
Версия 1.21
Исправлены проблемы скрытия и восстановления формы под Windows Vista и выше

Размер архива: 27 072 байт
Скачать: fwtray.zip


Диалог выбора директории. 19 сентября 2005 года



Компонент представляющий из себя диалог выбора директории. Сделан по аналогии с стандартными TOpenDialog, TSaveDialog.
Обновленная версия: исправлен глючек который заметил Питерский Михаил aka Piter,
за что ему огромное спасибо. Неверно велась работа с параметром pszDisplayName
структуры _browseinfoA из-за моего невнимательного чтения MSDN :)

Обновление 16 мая 2011 года.
Версия 1.11
Добавлена совместимость c Delphi 2010
Исправлены ошибки, обнаруженные Романом Резщиковым, за что ему огромное спасибо.

Размер архива: 9 377 байт
Скачать: fwopendirectory.zip


Модификация системной подсказки. 10 августа 2005 года



Компонент изменяет вид стандартной подсказки. Имеет свойство прозрачности ну и остальное. Короче ни для чего кроме украшения не годится :)

Размер архива: 4 171 байт
Скачать: fwhint.zip

..: НАВИГАЦИЯ :..
..: ДОПОЛНИТЕЛЬНО :..
..: ОФФЛАЙН ВЕРСИЯ :..

..: Советую посетить :..



DRKB (Delphi Russian Knowledge Base)

Torry's Delphi Pages!


..: Счетчики :..

Яндекс цитирования




 
Наверх : Главная страница : Сеть : Windows API : Компоненты : Разное : Книги : Полезные ссылки : О сайте
Гостевая книга... : Рассылка... :
© 2004 - 2016 Александр (Rouse_) Багель
Designed By Point Click Kill Industries for OSWD.org