Работа с zip архивами29.10.2024, 02:49. Показов 17803. Ответов 282
Метки нет (Все метки)
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.
Добавлено через 1 минуту кстати словосочетание zip-архивами в названии форум блочит почему-то )Добавлено через 6 минут На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
|
||||||
| 29.10.2024, 02:49 | |
|
Ответы с готовыми решениями:
282
Работа с ZIP-архивами - распаковка файлов Автоматизировать заполнение "Графика выполненных работ по месяцам" Задания из лаб.работ |
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.10.2024, 03:55 | |
|
Тема конечно очень интересная, и есть много разных способов для работы с ZIP архивами и много разных библиотек для этого. Так же стоит отметить, что формат ZIP это свободно описанный и свободно документированный формат, можно даже и самому написать распаковщик, при желании, но потратить придётся конечно очень много времени, даже зная все описания структур и основной алгоритм, который свободно описан.
Я искал информацию в Интернете, для интереса и много чего находил, так же понимаю что бывает сложно найти что-то для себя, тем более на VB6. Добавлено через 4 минуты Итак предлагаемая тобой тема это как работать с архивами ZIP используя библиотеку zlibwapi.dll на VB6. Если мы сейчас будем рассматривать именно zlibwapi.dll то нужно знать сначала, что именно мы хотим от этой библиотеки. И нужно посмотреть а есть ли там вообще такая возможность как распаковка в байтовый массив, как ты хочешь.
1
|
|
| 29.10.2024, 04:04 [ТС] | |
|
Архивация сложная тема, я находил тоже пример реализации сжатия Хоффмана, там довольно не просто все, похоже на шифрование причем символами переменной битовой длины. При чем там символы, которые попадаются статистически чаще в тексте должны кодироваться символами меньшей битовой длины. Это только Хоффман, а перед этим должно как-то сжиматься в лемпель зип и еще вопрос, как надо записывать структуру файлов в архиве. Короче сильно много вопросов )
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 29.10.2024, 04:07 | ||
|
0
|
||
| 29.10.2024, 04:13 [ТС] | |
|
Пишу с телефона, потому без цитирования. Да именно zip, это самый популярный формат много где используется. Я смотрел экспорты zlibwapi там все есть, включая упомянутые функции, вопрос, только как из использовать
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.10.2024, 04:17 | |
|
Вот здесь у меня в этой теме есть очень простой пример как упаковать и распаковать буфер на лету Функция RtlDecompressBuffer иногда обманывает и возвращает ложный успех вместо алгоритма Хафмана можно просто использовать функции RtlCompressBuffer и RtlDecompressBuffer . Но я не знаю почему тебе нужен именно ZIP.
2
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.10.2024, 04:23 | |
|
Здесь есть у меня пример по работе с библиотекой zlibwapi.dll на VB6. Но там по моему только упаковка, надо посмотреть ещё будет. Зато есть все объявления и структуры.
3
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 29.10.2024, 04:39 | ||
|
2
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.10.2024, 04:57 | |
|
Я иногда жалел кстати о том, что в Microsoft'е не сделали встроенных API-функций для ZIP чтобы встроенная уже DLL-библиотека была в Windows. Или в том же самом ntdll.dll можно было бы и добавить функций для компрессии и декомпресии буфера ZIP. Но они не захотели. Хотя shell32 же как-то всё же работает с ZIP...
Добавлено через 10 минут Кстати вот же пример на иностранном форуме для работы с твоей библиотекой: https://www.vbforums.com/showt... odZlib-bas Скорее всего тебе просто нужно воспользоваться функцией GzipDecompress
1
|
|
| 29.10.2024, 05:06 [ТС] | |
|
Там есть своя зип-либа, только реализована она как-то по буржуйски. Но я видел пример у fafalone, с испоизованием специальной tlb
Добавлено через 5 минут GzipDecompress там только исп-ся compress/uncompress, но тоже интересно, если нужен именно gzip
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.10.2024, 06:20 | |
|
Твоя задача какая вообще? Распаковать ZIP архив в байтовый массив? Это подразумевает что в ZIP будет только один файл?
Добавлено через 58 минут Я нашёл класс написанный на VB6 с нуля для полного управления ZIP архивами фактически исходный код любой библиотеки для работы с ZIP только ещё круче, там 3 тысячи строк кода, но вся эта гениальность полностью исключает зависимости от каких либо DLL мало того этот чувак распространяет свои труды свободно как есть (бесплатно). Добавлено через 13 минут Вот он этот гений, все права принадлежат ему если что https://github.com/wqweto там же на ГитХабе и все его труды. Всё о чём ты мечтал там есть.
2
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 29.10.2024, 06:52 | ||||||
Сообщение было отмечено testuser2 как решение
Решение
И я проверил - его код работает. Абсолютно гениальный код конечно.
Потом просто пишешь например так я проверил работает:
Добавлено через 6 минут Ну вот и всё. Зачем тогда мучиться с библиотекой zlibwapi.dll если в интернете нету примеров для распаковки ZIP-файлов этой библиотекой? Есть пример только упаковки почему-то файлов. А примера распаковки нет. Про zlibwapi.dll можно забыть тогда я считаю, раз есть этот класс от супер-гения где не нужны никакие зависимости.
1
|
||||||
| 29.10.2024, 07:37 [ТС] | ||
|
Я, кстати не знал, что у wqweto можно считывать в байтовый массив.
0
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||
| 29.10.2024, 15:49 | |||
|
Добавлено через 2 минуты Добавлено через 3 минуты Можно перелапатить весь вбфорумс и киберфорум и не найти ответа вообще про распаковку ZIP.
0
|
|||
| 29.10.2024, 16:48 [ТС] | |||||||
|
Чтение, думаю, должно быть таким: unzOpen, UnzOpenCurrentFile, unzReadCurrentFile
0
|
|||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.10.2024, 17:14 | |
Сообщение было отмечено testuser2 как решение
Решение
testuser2, кажется мне уже дали ответ на иностранном форуме: https://www.vbforums.com/showt... ibwapi-dll
Добавлено через 2 минуты Надо будет посмотреть что там за класс у них, но я вижу что они не используют почему-то описанную тобой последовательность функций там просто Uncompress скорее всего... Странно, надо будет посмотреть...
1
|
|
| 29.10.2024, 17:14 | |
|
Помогаю со студенческими работами здесь
20
access и zip архив Как распаковать ZIP-файл в 7z?
Замена файла в zip архиве при совпадении имени Как сделать архив zip? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|