Catalog · How the catalog works
SMARTLARK
Современный консольный архиватор файлов для Windows, написанный на Delphi XE8. SMARTLARK реализует несколько алгоритмов сжатия с современным форматом архива, совместимым с 64-битными системами.
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
SMARTLARK Архиватор v2.0
Современный консольный архиватор файлов для Windows, написанный на Delphi XE8. SMARTLARK реализует несколько алгоритмов сжатия с современным форматом архива, совместимым с 64-битными системами.
🎯 Возможности
Основной функционал
- Добавление файлов - Сжатие и добавление файлов в архив с использованием различных методов сжатия
- Извлечение файлов - Распаковка и извлечение файлов с полной проверкой CRC32
- Просмотр содержимого - Отображение содержимого архива с подробной статистикой сжатия
- Удаление файлов - Удаление файлов из архива
- Проверка целостности - Проверка целостности архива и контрольных сумм CRC32
- Обновление файлов - Перезапись существующих файлов в архиве
Методы сжатия
- Store - Без сжатия (для уже сжатых файлов)
- LZSS - Алгоритм Lempel-Ziv-Storer-Szymanski
- LZHUF - LZSS + Адаптивное кодирование Хаффмана (по умолчанию)
- DEFLATE - LZ77 + Хаффман (совместим с zlib)
- LZW - Алгоритм Lempel-Ziv-Welch
- LZ77 - Классический алгоритм Lempel-Ziv 1977
Расширенные возможности
- Поддержка масок (wildcards) - Полная поддержка шаблонов
*и?во всех командах - Рекурсивная обработка - Обработка директорий рекурсивно с опцией
-r - Уровни сжатия - 9 уровней сжатия (1-9) для поддерживаемых методов
- Выбор метода - Выбор метода сжатия с опцией
-m - Подробный режим - Детальная статистика операций с опцией
-v - Расширенная статистика - Время, скорость, коэффициенты сжатия, разбивка по методам
- Настраиваемый вывод - Указание директории для извлечения
- Сохранение временных меток - Сохранение оригинальных дат модификации файлов
- Поддержка UTF-8 - Полная поддержка Unicode имен файлов
Целостность данных
- Контрольные суммы CRC32 - На всех сжатых данных
- Валидация архива - Автоматическая проверка структуры при открытии
- Проверка распаковки - Полное тестирование round-trip
- Обработка ошибок - Иерархия исключений с кодами ошибок
- Валидация входных данных - Проверка путей, имен файлов и параметров
- Функции безопасности - Защита от zip bomb, обнаружение пересечений файлов, защита от переполнения буфера
📦 Установка
Установка не требуется. Архиватор является автономным консольным приложением.
Быстрый старт
- Скачайте
SMARTLARK.exe - Поместите его в директорию из PATH (например,
C:\Program Files\SMARTLARK\) - Откройте командную строку и начните использовать:
# Проверка установки
SMARTLARK
# Создание первого архива
SMARTLARK a myfiles.lark document.txt image.jpg💻 Использование
Основные команды
# Создание архива и добавление файлов (по умолчанию: LZHUF сжатие)
SMARTLARK a myarchive.lark file1.txt file2.txt file3.bin
# Добавление файлов с указанием метода сжатия
SMARTLARK a myarchive.lark file1.txt -m deflate -c 9
# Добавление с рекурсией и масками
SMARTLARK a myarchive.lark *.txt -r
# Просмотр содержимого архива с подробной статистикой
SMARTLARK l myarchive.lark
# Извлечение всех файлов
SMARTLARK x myarchive.lark -o extracted\
# Извлечение конкретных файлов с масками
SMARTLARK x myarchive.lark *.txt -o results\
# Проверка целостности архива
SMARTLARK t myarchive.lark
# Удаление файлов с масками
SMARTLARK d myarchive.lark *.tmp
# Обновление файла в архиве
SMARTLARK u myarchive.lark newfile.txtМетоды сжатия
# Store (без сжатия)
SMARTLARK a archive.lark file.zip -m store
# LZSS сжатие
SMARTLARK a archive.lark file.txt -m lzss -c 5
# LZHUF сжатие (по умолчанию, LZSS + Хаффман)
SMARTLARK a archive.lark file.txt -m lzhuf -c 6
# DEFLATE сжатие (совместимо с zlib)
SMARTLARK a archive.lark file.txt -m deflate -c 9
# LZW сжатие
SMARTLARK a archive.lark file.txt -m lzw
# LZ77 сжатие
SMARTLARK a archive.lark file.txt -m lz77 -c 7Примеры использования масок
# Извлечение всех текстовых файлов
SMARTLARK x archive.lark *.txt
# Извлечение файлов, соответствующих шаблону
SMARTLARK x archive.lark test*.txt
# Извлечение файлов с одиночным символом-маской
SMARTLARK x archive.lark file?.txt
# Удаление всех временных файлов
SMARTLARK d archive.lark *.tmp
# Добавление всех файлов, начинающихся с "backup"
SMARTLARK a archive.lark backup*.* -rОпции
| Опция | Описание |
|---|---|
-r |
Рекурсивная обработка директорий |
-o <dir> |
Директория вывода для извлечения |
-c[1-9] |
Уровень сжатия (1-9, выше = лучше сжатие, медленнее) |
-m <method> |
Метод сжатия: store, lzss, lzhuf, deflate, lzw, lz77 |
-v |
Подробный вывод (показывает детальную статистику) |
-h |
Показать справку |
Команды
| Команда | Описание |
|---|---|
a |
Добавить файлы в архив |
x |
Извлечь файлы из архива |
l |
Показать содержимое архива |
d |
Удалить файлы из архива |
t |
Проверить целостность архива |
u |
Обновить файлы в архиве |
Тестирование
# Запустить все тесты
SMARTLARK test all
# Запустить конкретные наборы тестов
SMARTLARK test lzss # Тесты сжатия LZSS
SMARTLARK test lzhuf # Тесты кодера LZHUF
SMARTLARK test deflate # Тесты DEFLATE (zlib)
SMARTLARK test lz77 # Тесты сжатия LZ77
SMARTLARK test lzw # Тесты сжатия LZW
SMARTLARK test archive # Интеграционные тесты архиваПримеры
# Создание архива с лог-файлами с использованием масок
SMARTLARK a logs.lark *.log -r -v
# Извлечение в конкретное место
SMARTLARK x archive.lark -o C:\backup\
# Проверка архива перед восстановлением
SMARTLARK t backup.lark
# Просмотр содержимого с подробной статистикой
SMARTLARK l archive.lark
# Добавление с максимальным сжатием используя DEFLATE
SMARTLARK a max_compression.lark largefile.bin -m deflate -c 9
# Извлечение только текстовых файлов с масками
SMARTLARK x archive.lark *.txt -o extracted\
# Удаление временных файлов
SMARTLARK d archive.lark *.tmp
# Добавление файлов с подробным выводом для просмотра статистики
SMARTLARK a archive.lark files.txt -v📋 Формат архива
SMARTLARK v2.0 использует собственный бинарный формат, оптимизированный для современных систем:
Структура архива
?????????????????? (60 ????????)
?????? ??????????????????: "SMARTLARK" (4 ??????????)
?????? ???????????? ??????????????: 0x0200 (2 ??????????)
?????? ?????????? (4 ??????????)
?????? ???????????? ?????????? (4 ??????????)
?????? ?????????????? ???????????? (4 ??????????)
?????? ?????????? ???????????????? (8 ????????)
?????? ?????????? ???????????????????? ???????????????????? (8 ????????)
?????? ???????????????????? ???????????? (4 ??????????)
???????????? ???????????? (???????????????????? ????????????)
?????? ???????????? ?????????? ????????????
?????? ???????????????????? ??????????????
?????????????????????? ??????????????
?????? ??????????????????: "LARD"
?????? ?????????????? ?????????????? ????????????
?????? ???????????????????? ????????????Методы сжатия
SMARTLARK поддерживает несколько алгоритмов сжатия:
LZHUF (По умолчанию) - LZSS + Адаптивный Хаффман:
- LZSS: Вариант LZ77 на основе словаря с оптимизацией хеш-цепочки
- Размер окна: 4KB (12-битные позиции)
- Длина совпадения: 3-258 байт
- Хеш-таблица: 64K записей для O(1) поиска совпадений
- Хаффман: Адаптивное кодирование Хаффмана
- Алфавит из 256 символов
- Динамическое построение дерева каждые 4096 символов
- Побитовый ввод/вывод для оптимального кодирования
DEFLATE - LZ77 + Хаффман (совместим с zlib):
- Промышленный стандарт сжатия
- Отличные коэффициенты сжатия
- Быстрая распаковка
LZSS - Чистый Lempel-Ziv-Storer-Szymanski:
- Быстрое сжатие
- Хорошо для текстовых файлов
- Меньший коэффициент сжатия, чем LZHUF
LZW - Lempel-Ziv-Welch:
- Классический алгоритм
- Хорошо для повторяющихся данных
LZ77 - Классический Lempel-Ziv 1977:
- Оригинальный алгоритм LZ
- Простой и быстрый
Store - Без сжатия:
- Для уже сжатых файлов
- Самая быстрая операция
Контрольные суммы
- CRC32: Основная контрольная сумма (полином zlib)
- Adler32: Опциональная быстрая контрольная сумма
🏗️ Структура проекта
SMARTLARK/
?????? SMARTLARK.dpr # ?????????????? ??????????????????
?????? src/
??? ?????? uSMARTLARKArchive.pas # ???????????????? ?? ??????????????
??? ?????? uSMARTLARKTypes.pas # ?????????????????????? ??????????
??? ?????? uSMARTLARKExceptions.pas # ???????????????? ????????????????????
??? ?????? uCommandLine.pas # CLI ??????????????????
??? ?????? uConsoleOutput.pas # ???????????????????? ????????/??????????
??? ?????? Compression/
??? ??? ?????? uLZSSCompressor.pas # ???????????????? LZSS
??? ??? ?????? uLZHUF.pas # ?????????? LZHUF
??? ??? ?????? uHuffmanCoding.pas # ?????????????????????? ????????????????
??? ??? ?????? uDeflateCompressor.pas # DEFLATE (zlib)
??? ??? ?????? uLZWCompressor.pas # ???????????????? LZW
??? ??? ?????? uLZ77Compressor.pas # ???????????????? LZ77
??? ??? ?????? uStoreCompressor.pas # Store (?????? ????????????)
??? ??? ?????? uLZSSTest.pas # ?????????? LZSS
??? ??? ?????? uLZHUFTest.pas # ?????????? LZHUF
??? ??? ?????? uDeflateTest.pas # ?????????? DEFLATE
??? ??? ?????? uLZWTest.pas # ?????????? LZW
??? ??? ?????? uLZ77Test.pas # ?????????? LZ77
??? ?????? Utils/
??? ??? ?????? uCRC32.pas # CRC32/Adler32
??? ??? ?????? uStreamHelpers.pas # ?????????????? ??????????????
??? ?????? uArchiveIntegrationTest.pas # ???????????????????????????? ??????????
?????? Documentation/
?????? README.md # ???????? ???????? (????????????????????)
?????? README_RU.md # ???????? ???????? (??????????????)
?????? SMARTLARK_Format_Specification_v2.0.md
?????? LZSS_IMPLEMENTATION.md🧪 Тестирование
Архиватор включает комплексные тесты:
Модульные тесты
- LZSS - Тесты round-trip сжатия/распаковки
- LZHUF - Тесты кодера LZSS + Хаффман
- DEFLATE - Тесты совместимого с zlib сжатия
- LZW - Тесты алгоритма Lempel-Ziv-Welch
- LZ77 - Тесты классического алгоритма LZ77
- Хаффман - Тесты построения дерева и кодирования
Интеграционные тесты
- Создание и валидация архива
- Добавление файлов с различными методами сжатия
- Извлечение файлов и проверка CRC32
- Тестирование целостности всех файлов
- Удаление файлов с масками
- Полное тестирование round-trip (сжатие → извлечение → сравнение)
- Несколько методов сжатия в одном архиве
Запуск тестов
# Запустить все тесты
SMARTLARK test all
# Запустить конкретный набор тестов
SMARTLARK test archive # Операции с архивом
SMARTLARK test lzss # Алгоритм LZSS
SMARTLARK test lzhuf # Кодер LZHUF
SMARTLARK test deflate # DEFLATE (zlib)
SMARTLARK test lz77 # Алгоритм LZ77
SMARTLARK test lzw # Алгоритм LZW📊 Производительность
Типичная производительность на современном оборудовании:
| Операция | Скорость |
|---|---|
| Сжатие | 5-15 МБ/с |
| Распаковка | 20-50 МБ/с |
| Просмотр архива | <10 мс (100 файлов) |
| Проверка целостности | 20-50 МБ/с |
| Добавление файла | 5-15 МБ/с |
| Извлечение файла | 20-50 МБ/с |
Использование памяти: <10 МБ для типичных файлов
🔧 Технические детали
Алгоритмы сжатия
LZHUF (По умолчанию) объединяет две техники:
- LZSS (Lempel-Ziv-Storer-Szymanski)
- Находит повторяющиеся паттерны в данных
- Кодирует как пары (позиция, длина)
- Оптимизация хеш-цепочки для быстрого поиска совпадений
- Адаптивный Хаффман
- Динамически корректирует распределение битов
- Более частые символы получают более короткие коды
- Перестраивает дерево каждые 4096 символов
DEFLATE использует библиотеку zlib:
- Промышленный стандарт LZ77 + Хаффман
- Отличные коэффициенты сжатия
- Быстрый и надежный
LZSS - Чистое словарное сжатие:
- Быстрое сжатие и распаковка
- Хорошо для текста и структурированных данных
LZW - Словарное сжатие:
- Строит словарь во время сжатия
- Хорошо для повторяющихся паттернов
LZ77 - Классическое скользящее окно:
- Оригинальный алгоритм LZ
- Простой и эффективный
Целостность данных
- Контрольные суммы CRC32 - Проверяют данные после распаковки
- Валидация архива - Автоматическая проверка структуры при открытии
- Проверка версии формата - Обеспечивает совместимость
- Тестирование round-trip - Обеспечивает надежность
- Валидация входных данных - Проверка путей, имен файлов и параметров
- Обработка исключений - Комплексная иерархия ошибок с кодами ошибок
🚀 Системные требования
- Windows XP или новее
- Delphi XE8 или новее (для компиляции)
- Минимальная память и место на диске
📝 История версий
v2.0 (Текущая) - 2025-01-20
- Несколько методов сжатия: Store, LZSS, LZHUF, DEFLATE, LZW, LZ77
- LZSS с оптимизацией хеш-цепочки - Быстрый поиск паттернов
- Адаптивное кодирование Хаффмана - Динамическое энтропийное кодирование
- Современный формат архива (v2.0) - Совместим с 64-битными системами
- Полная интеграция CLI - Полный набор команд
- Поддержка масок - Полное сопоставление паттернов
*и?для всех команд - Расширенная статистика - Время, скорость, коэффициенты сжатия, разбивка по методам
- Комплексная обработка ошибок - Иерархия исключений с кодами ошибок
- Валидация входных данных - Проверка путей, имен файлов и параметров
- Валидация архива - Автоматическая проверка структуры с обнаружением пересечений файлов
- Функции безопасности - Защита от zip bomb (обнаружение подозрительных коэффициентов >1000:1)
- Рефакторинг кода - Устранено дублирование кода, улучшена поддерживаемость
- Аудит кода - Полный аудит безопасности и качества завершен (100% проблем исправлено)
- Комплексное тестирование - 6 наборов тестов алгоритмов + интеграционные тесты
- XML документация - Полная документация API и алгоритмов
- 7000+ строк производственного кода - Хорошо структурированный и документированный
v1.0 (Классическая)
- Сжатие LZSS
- Базовые операции с файлами
- Ограниченная поддержка формата
🐛 Известные проблемы
В настоящее время не выявлено.
📄 Лицензия
Этот проект демонстрирует современную реализацию архиватора с использованием классических алгоритмов сжатия. Весь код оригинальный.
🤝 Вклад в проект
Кодовая база структурирована для легкого расширения:
- Новые методы сжатия: Добавить класс компрессора в директорию
Compression/ - Дополнительные функции: Реализовать в
uCommandLine.pas - Изменения формата: Обновить
uSMARTLARKTypes.pasиuSMARTLARKArchive.pas - Улучшения производительности: Профилировать и оптимизировать циклы сжатия
- Новые тесты: Добавить модуль тестов, следуя существующим паттернам
📚 Документация
SMARTLARK_Format_Specification_v2.0.md- Детали формата архиваLZSS_IMPLEMENTATION.md- Объяснение алгоритма сжатия LZSSCODE_AUDIT_REPORT.md- Полный отчёт о аудите кодаAUDIT_FINAL_SUMMARY.md- Финальный статус аудита (100% завершено)REFACTORING_COMPLETE.md- Документация по рефакторингу кодаQUICKSTART.md- Руководство по быстрому стартуRELEASE_AUDIT.md- Аудит кода и отчет о готовности к релизуTODO_AUDIT.md- Дорожная карта разработки и выполненные задачиSESSION5_SUMMARY.md- Последний прогресс разработкиDEVELOPMENT_STATUS.md- Текущий статус проекта
XML Документация
Все публичные API полностью документированы XML комментариями:
TSMARTLARKArchive- Операции с архивомTCommandLine- CLI интерфейс- Алгоритмы сжатия - Подробная документация алгоритмов
- Определения типов - Полная документация типов
🎓 Образовательная ценность
Этот проект демонстрирует:
- Современные практики программирования на Delphi - Объектно-ориентированный дизайн, обработка исключений
- Классические алгоритмы сжатия - Реализации LZSS, LZHUF, DEFLATE, LZW, LZ77
- Дизайн бинарных форматов файлов - Эффективная структура архива с центральным каталогом
- Дизайн интерфейса командной строки - Полнофункциональный CLI с масками и опциями
- Стратегии тестирования и верификации - Комплексные модульные и интеграционные тесты
- Спецификация формата архива - Полная документация формата
- Обработка ошибок - Иерархия исключений с кодами ошибок
- Документация кода - XML документация для всех публичных API
- Управление памятью - Правильная очистка ресурсов и предотвращение утечек
📞 Поддержка
При проблемах или вопросах:
- Проверьте справку:
SMARTLARK -h - Изучите файлы документации
- Запустите тесты:
SMARTLARK test all - Проверьте архив:
SMARTLARK t archive.lark
✨ Благодарности
Спасибо Haruhiko Okumura и Haruyasu Yoshizaki за оригинальные дизайны алгоритмов LZSS и LZHUF, которые легли в основу этой реализации.
SMARTLARK Архиватор v2.0 Полная, функциональная реализация консольного архиватора на Delphi XE8 ✅ Готов к продакшену • 📊 100% Готовности • 🚀 Полностью протестирован • 📚 Полностью документирован • 🔒 Прошёл аудит безопасности

