Работа с zip архивами29.10.2024, 02:49. Показов 24074. Ответов 283
Метки нет (Все метки)
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.
Добавлено через 1 минуту кстати словосочетание zip-архивами в названии форум блочит почему-то )Добавлено через 6 минут На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
|
||||||
| 29.10.2024, 02:49 | |
|
Ответы с готовыми решениями:
283
Работа с ZIP-архивами - распаковка файлов Автоматизировать заполнение "Графика выполненных работ по месяцам" Задания из лаб.работ |
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 30.10.2024, 17:52 | |
|
АААА всё вижу да ты сделал так что просто непонятно зачем автоматически распаковывать при создании списка, а не по отдельной команде/функции?
0
|
|
| 30.10.2024, 18:02 [ТС] | ||
|
Добавлено через 3 минуты Хотя возможно, если в твин-бейсике будут какие-то улучшения, то и его код будет быстрее, да он и в принципе наверное очень быстрый, если не здарачиваться с быстротой )
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 30.10.2024, 18:03 | |
|
testuser2, на самом деле оптимальным решением было бы распаковывать буфер с помощью встроенной в винду библиотеку zipfldr.dll но я не знаю как ей пользоваться, трюкач дал ссылку и на этом всё, его код не работает там
0
|
|
| 30.10.2024, 18:23 [ТС] | |||
|
Добавлено через 6 минут Добавлено через 11 минут Вот пример распаковки от fafalone, он, кстати там пишет, что его код основан на другом сишном коде Добавлено через 1 минуту Честно, скажу, мне не очень нравятся такие примеры, для чертовой распаковки зипа столько непонятных вещей..
1
|
|||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 31.10.2024, 01:39 | |
|
testuser2, у fafalone действительно интересный пример, я тоже не очень люблю возиться с подключением TLB но иногда приходится. Но в том примере нет распаковки буфера в байтовый массив, только файлы.
Добавлено через 44 секунды The trick, есть ли у zipfldr возможность распаковки буфера в байтовый массив? Добавлено через 3 минуты The trick, даже после того как я подключил oleexp.tlb всё равно твой пример не работает. Нету никаких ошибок но абсолютно ничего не происходит. Добавлено через 4 минуты The trick, теперь подключить решил olelib.tlb всё равно ничего не работает Добавлено через 2 минуты этот сырой пример от The Trick мне вообще никак не помог короче, у fafalone хотябы проект который уже работает Добавлено через 5 часов 48 минут Очень интересно оказалось на самом деле поработать с классом от wqweto у него в классе огромное количество возможностей, много разных свойств файлов можно получать, все вложенные подпапки, открывает архив под паролем и так далее и тому подобное. Работает как с байтовыми массивами так и просто с файлами, упаковка/распаковка, добавление, удаление - всё что угодно прям полноценная библиотека. Сейчас я проверяю как по скорости будет загружать на примере моей мини-программки для загрузки картинок и меня уже приятно удивило что работает быстро довольно.
1
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 31.10.2024, 01:52 | |
|
В общем я пробовал файлы до 5 Мб правда только загружать из ZIP по скорости ни чем не хуже чем DLL реализация.
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 31.10.2024, 01:56 | |
|
В общем посмотри сам скорость достаточно быстрая в работе алгоритма wqweto, на удивление... Наверное он очень сильно постарался чтобы достичь максимальной скорости почти так же быстро как и в DLL
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||||||
| 31.10.2024, 02:06 | ||||||
|
И код довольно простой получается, вот посмотри:
Хочу обратить внимание, что здесь я учитываю только скорость самой распаковки файла, скорость загрузки в пикчебокс я уже не учитываю это дополнительное время. То есть чисто распаковка даже больших файлов идёт довольно быстро, лишь чуть-чуть уступая скорости алгоритма DLL. Добавлено через 4 минуты То есть возиться с zipfldr нет никакого смысла вообще. Если прям супер огромные данные ты будешь распаковывать тогда используй технологию zlibwapi.dll будет немного быстрее. А если не сильно большие то класс от wqweto это просто то что нужно это просто сказка) Добавлено через 1 минуту Стоит только понимать, что при подключении этого класса EXE-файл будет увеличиваться на 150 Кб, но например zlibwapi.dll у тебя целых 170 Кб, даже больше немного... Добавлено через 36 секунд Хотя моя, более старая, версия zlibwapi.dll занимает всего 74 Кб
0
|
||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 31.10.2024, 02:18 | ||
|
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 31.10.2024, 17:20 | |
|
Несмотря на то, что я прекратил этим заниматься, тема получила дальнейшее развитие. На иностранном форуме я создавал тему с вопросом как распаковать ZIP библиотекой zlibwapi.dll. Вот эта тема: https://www.vbforums.com/showt... &p=5661070
Я там так же выкладывал свою мини-программку для чтения картинок из архива. Так вот китаец по имени xiaoyao обратил внимание на то, что класс любезно предоставленный Arnoutdv оказался недоработанным и не производилось чтение файлов из вложенных подпапок оказывается. xiaoyao решил сам доработать этот класс и сам создал новый код, новый форк так сказать, и выложил новую программку. Так же он добавил возможность распаковки в файлы. Ещё он сделал вторую программу которая работает полностью на алгоритме zlibwapi. Здесь он выложил в готовых решениях даже как продолжение этой темы: https://www.vbforums.com/showt... ibwapi-dll
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||||||
| 31.10.2024, 17:31 | ||||||
|
Он доработал класс zlibwapiClass.cls вот новый код (в этом классе идёт только распаковка через zlibwapi.dll, а само чтение списка файлов из ZIP идёт самописными скриптами):
1
|
||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||||||
| 31.10.2024, 17:35 | ||||||
|
Потом этот китаец так же немного переделал класс MiniZipDir и выложил тоже программку новую с этим классом.
В этом классе используется только код чтения и распаковки исключительно из API-функций к zlibwapi.dll.
0
|
||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|||||||||||
| 31.10.2024, 17:43 | |||||||||||
|
Ну и программку эту я его слегка переделал чтобы картинки загружались автоматически при выборе элемента списка.
Код формы:
Эта программа использует исключительно API-функции к библиотеке zlibwapi.dll.
1
|
|||||||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 31.10.2024, 17:49 | ||
|
Добавлено через 1 минуту Zlib хотя бы написал Марк Адлер один из авторов основателей ZIP'а Добавлено через 38 секунд В свойствах библитеки zlibwapi.dll написано (C) 1995-2013 Jean-loup Gailly & Mark Adler
1
|
||
| 31.10.2024, 18:22 [ТС] | ||||||||
|
Просто плоская функция извлечение файла в байт-массив с поддержкой zip64
Кликните здесь для просмотра всего текста
Добавлено через 5 минут Добавлено через 26 минут typedef [public] int INT_PTR; Это очевидно алиас для типа Long. А вот интересно, поддерживается ли в idl настоящий тип INT_PTR ?
1
|
||||||||
|
Модератор
|
||
| 31.10.2024, 18:45 | ||
|
Также юзал ее для создания архива, но там есть ньюансы работы.
1
|
||
| 31.10.2024, 18:45 | |
|
access и zip архив Как распаковать ZIP-файл в 7z?
Замена файла в zip архиве при совпадении имени Как сделать архив zip? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|