Работа с zip архивами29.10.2024, 02:49. Показов 19252. Ответов 282
Метки нет (Все метки)
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.
Добавлено через 1 минуту кстати словосочетание zip-архивами в названии форум блочит почему-то )Добавлено через 6 минут На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
|
||||||
| 29.10.2024, 02:49 | |
|
Ответы с готовыми решениями:
282
Работа с ZIP-архивами - распаковка файлов Автоматизировать заполнение "Графика выполненных работ по месяцам" Задания из лаб.работ |
| 31.10.2024, 19:12 [ТС] | ||
|
0
|
||
|
Модератор
|
||||||||||||
| 31.10.2024, 20:32 | ||||||||||||
С упаковкой там ньюансы как раз в том что она в отдельном потоке запускается и нет механизма (документированного) уведомления о завершении + отображается диалог с прогрессом при длительных операциях. Если почитать ту тему код из которой я приводил - там как раз и пытались решить проблему эту. Для Win10 и еще вроде каких-то я не помню подробностей уведомление можно получить разными способами, т.к. я реверсил эту вещь не на всех системах, но точно знаю что через Shell-notify можно на WIN10 это сделать. Вот кусок кода из проекта одного:
Кстати на 10-ке у себя глянул, там вроде как можно через IContextMenu::InvokeCommand сделать без всяких костылей в основном потоке.
1
|
||||||||||||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 31.10.2024, 20:47 | |
|
docx значит читаете? это тоже зип, да?
0
|
|
| 01.11.2024, 02:04 [ТС] | ||
|
The trick, спасибо, это отличное крутое дополнение темы, хоть и не очень понятное. Лимит количества ответов видимо заполнен для данной темы, хотя можно было бы поставить это также ответом.
Есть еще нюанс, когда документ сохраняешь, он на самом деле перезаписывается на новом месте, а старый удаляется. Если перед сохранением делать жесткую ссылку на файл перед сохранением, то можно сохранить старую версию файла.
0
|
||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 01.11.2024, 04:46 | ||
|
Добавлено через 5 минут Лучше бы The Trick скинул полностью рабочий проект, чтобы наглядно было видно, а то разрозненные куски кода мне тоже не понятны. Тем более его код не работал у меня когда я пытался.
0
|
||
| 01.11.2024, 18:52 [ТС] | ||
|
Добавлено через 32 минуты Нашел примерчики Добавлено через 4 часа 5 минут Как я понял (из всего что я вычитал), zlib не поддерживает перезапись/удаление внутренних файлв. нужно полностью перезаписывать весь архив для модификации файлов.
1
|
||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 01.11.2024, 18:58 | |
|
1
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 01.11.2024, 19:31 | ||
|
Добавлено через 18 минут В файловой системе же не может быть два одинаковых файла (это была бы ошибка файловой системы уже). А в архивах разве это возможно тоже?
0
|
||
| 02.11.2024, 02:45 [ТС] | |||
|
0
|
|||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 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
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 03.11.2024, 15:34 | |
|
0
|
|
| 03.11.2024, 15:35 [ТС] | |
|
Использование: вызвать процедуру ZlibWapi_Check при загрузке формы или непосрдественно перед работой с архивами. Процедура проверяет наличие zlibwapi и в случае ошибки вызова функции zlibVersion() (возвращает указатель на строку текущей версии библиотеки) извлекает файл библиотеки из "ресурсов" в папку программы.
0
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 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
|
|||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 03.11.2024, 15:53 | |
|
testuser2, в VB6 создать строку в ANSI это не так просто!
1
|
|
| 03.11.2024, 15:56 [ТС] | |
|
Не получится константой, там же надо собирать строку из частей, а загнать разом такую строку в переменную нельзя в коде..
0
|
|
| 03.11.2024, 15:56 | |
|
Помогаю со студенческими работами здесь
80
access и zip архив Как распаковать ZIP-файл в 7z?
Замена файла в zip архиве при совпадении имени Как сделать архив zip? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|