Работа с zip архивами29.10.2024, 02:49. Показов 24050. Ответов 283
Метки нет (Все метки)
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.
Добавлено через 1 минуту кстати словосочетание zip-архивами в названии форум блочит почему-то )Добавлено через 6 минут На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
|
||||||
| 29.10.2024, 02:49 | |
|
Ответы с готовыми решениями:
283
Работа с ZIP-архивами - распаковка файлов Автоматизировать заполнение "Графика выполненных работ по месяцам" Задания из лаб.работ |
| 31.10.2024, 19:12 [ТС] | ||
|
0
|
||
|
Модератор
|
||||||||||||
| 31.10.2024, 20:32 | ||||||||||||
С упаковкой там ньюансы как раз в том что она в отдельном потоке запускается и нет механизма (документированного) уведомления о завершении + отображается диалог с прогрессом при длительных операциях. Если почитать ту тему код из которой я приводил - там как раз и пытались решить проблему эту. Для Win10 и еще вроде каких-то я не помню подробностей уведомление можно получить разными способами, т.к. я реверсил эту вещь не на всех системах, но точно знаю что через Shell-notify можно на WIN10 это сделать. Вот кусок кода из проекта одного:
Кстати на 10-ке у себя глянул, там вроде как можно через IContextMenu::InvokeCommand сделать без всяких костылей в основном потоке.
1
|
||||||||||||
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 31.10.2024, 20:47 | |
|
docx значит читаете? это тоже зип, да?
0
|
|
| 01.11.2024, 02:04 [ТС] | ||
|
The trick, спасибо, это отличное крутое дополнение темы, хоть и не очень понятное. Лимит количества ответов видимо заполнен для данной темы, хотя можно было бы поставить это также ответом.
Есть еще нюанс, когда документ сохраняешь, он на самом деле перезаписывается на новом месте, а старый удаляется. Если перед сохранением делать жесткую ссылку на файл перед сохранением, то можно сохранить старую версию файла.
0
|
||
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 01.11.2024, 04:46 | ||
|
Добавлено через 5 минут Лучше бы The Trick скинул полностью рабочий проект, чтобы наглядно было видно, а то разрозненные куски кода мне тоже не понятны. Тем более его код не работал у меня когда я пытался.
0
|
||
| 01.11.2024, 18:52 [ТС] | ||
|
Добавлено через 32 минуты Нашел примерчики Добавлено через 4 часа 5 минут Как я понял (из всего что я вычитал), zlib не поддерживает перезапись/удаление внутренних файлв. нужно полностью перезаписывать весь архив для модификации файлов.
1
|
||
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 01.11.2024, 18:58 | |
|
1
|
|
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 01.11.2024, 19:31 | ||
|
Добавлено через 18 минут В файловой системе же не может быть два одинаковых файла (это была бы ошибка файловой системы уже). А в архивах разве это возможно тоже?
0
|
||
| 02.11.2024, 02:45 [ТС] | |||
|
0
|
|||
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 02.11.2024, 03:04 | |
|
Чисто теоритически должен быть способ как поменять файл внутри архива прямой перезаписью внутри файла ZIP находя нужный файл нужное смещение в байтах но фишка в том что там перезаписывать нужно ни только буфер но и описывающею структуру надо ли это вообще ещё и crc поменяется
0
|
|
| 02.11.2024, 07:38 [ТС] | |
|
Сделал жесткую ссылку на zip-файл, добавил в него файл с помощью zlibwapi, жесткая ссылка не разъединилась с файлом. Затем скопиовал в этотархив файл с помощью проводника, ссылка, также осталась связана с файлом. Что говорит о том, что информация дописывалась в один и тот же файл. Одако кодга я в проводнике удалил один файл в архиве, то связь файла и ссылки пропала, что свидетельствует о том, что после удаления файл полностью перезаписывается в новое место, о чем говорил locm. Также происходит каждый раз, когда сохраняются изменения в файлах xlsx, docx и т.д., они полностью перезаписываются. Таковы издержки использования zip-сжатия, хотя фактически может быть как таковых издержек и нет, поскольку сжатая зип-папка можте весить меньше отдельных составляющих ее частей.
0
|
|
| 03.11.2024, 15:27 [ТС] | |
|
Модуль автоустановки zlibwapi.dll в каталог программы, в случае ее отсутствия в системе. Очень капризный модуль, не полчилось использовать его в vba, документ отказался сохранятся в виду непредвиденных причин, и вот сейчас, он оказался слишком длинным, чтобы его запостить на форум. Наверное я очень крутой программист, раз такие длинные модули пишу
1
|
|
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 15:34 | |
|
0
|
|
| 03.11.2024, 15:35 [ТС] | |
|
Использование: вызвать процедуру ZlibWapi_Check при загрузке формы или непосрдественно перед работой с архивами. Процедура проверяет наличие zlibwapi и в случае ошибки вызова функции zlibVersion() (возвращает указатель на строку текущей версии библиотеки) извлекает файл библиотеки из "ресурсов" в папку программы.
0
|
|
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 03.11.2024, 15:44 | ||
|
testuser2, как ты это сделал? как ты сделал строку B64?
И зачем поставил Return в конце процедуры ZlibWapi_1_2_8_Install? Добавлено через 57 секунд Добавлено через 26 секунд EXE 278 Кб получился Добавлено через 56 секунд Но моя предыдущая технология ещё больше раздувала EXE где был описан каждый байт, для создания файла... Добавлено через 18 секунд Я ничего не знал про base64 если честно
0
|
||
| 03.11.2024, 15:49 [ТС] | |||
|
Сам модуль 126 кб, он в Ansi. Добавлено через 2 минуты Да, действительно, открыл в листере в режиме utf-16 там этот текст. Может быть попробовать его загонят в константу..
0
|
|||
|
Вернулся
1777 / 672 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 15:53 | |
|
testuser2, в VB6 создать строку в ANSI это не так просто!
1
|
|
| 03.11.2024, 15:56 [ТС] | |
|
Не получится константой, там же надо собирать строку из частей, а загнать разом такую строку в переменную нельзя в коде..
0
|
|
| 03.11.2024, 15:56 | |
|
access и zip архив Как распаковать ZIP-файл в 7z?
Замена файла в zip архиве при совпадении имени Как сделать архив zip? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|