Работа с ZIP архивами. |
4 марта 2011 года |
|
В последнее время по работе я часто начал сталкиваться с задачами требующими работу с архивами.
Формат архива для решения задач был выбран самый распространенный - ZIP и я начал искать уже реализованные сторонние классы для работы с архивами в этом формате.
Изначально требования были просты: мне требовался компонент (набор классов) который не тянул бы за собой сторонние библиотеки.
Таких компонентов нашлось достаточно много.
Но потом задачи стали усложнятся и соответственно требования к компонентам изменились.
Через какое-то время мне нужен был компонент умеющий паковать и распаковывать файлы больших размеров.
Еще через какое-то время потребовалось чтобы при этом он не отьедал почти всю память у приложения.
В конце концов мне потребовалось что бы он умел работать с зашифрованными архивами,
плюс до кучи (т.к. работать приходится в основном с XML - т.е. текстом) чтобы он поддерживал алгоритм сжатия PPMD.
В итоге у меня остался один более-менее приемлимый вариант, но стоящий 400 долларов и не умеющий PPMD (sic).
Пришлось делать все самому...
В архиве исходники, техническая сопроводиловка, 15 демо примеров, юниттесты и тест производительности класса.
Обновление 23 мая 2020 года.
Версия 1.1.0
- Добавлена поддержка многотомных архивов. Введены классы TFWAbstractMultiStream и реализация наследника от него для работы с локальными файлами TFWFileMultiStream.
- Добавлены примеры работы с многотомными архивами (создание/чтение/модификация). См. папку .\Demos\MultyPart ZIP\
- Добавлен проект юнит-тестирования всех модулей фреймворка FWZipTests а так-же проект тестирования. См. папку .\.UnitTest\
- Изменено поведение параметра Mask в методе TFWZipWriter.AddFolder. Теперь список масок можно перечислять через точку с запятой. За поиск в подпапках отвечает параметр SubFolders.
- Исправлена ошибка возникающая при повторном создании архива с предыдущей неудачной сборки (не скидывался флаг ExceptOnWrite отвечающий за сборку в CentralDirectory).
- Исправлена ошибка контроля размера блока ExData для каждой записи.
- Исправлена ошибка при получения контрольной суммы с папки при назначеном пароле.
Размер архива: 985 453 байт
Скачать: 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
|
|
..: НАВИГАЦИЯ :..
|
|
|
|
|
|
|
|
|
..: ДОПОЛНИТЕЛЬНО :..
|
|
|
|
|