Работа с zip архивами29.10.2024, 02:49. Показов 24056. Ответов 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
|
||
| 03.11.2024, 16:13 | ||
|
testuser2, ансишную строку можно создать через присвоение из байтового массива по моему, или стабильно-точно через StrConv
Добавлено через 1 минуту Зашивать реально по на самом деле в ресурсы ещё можно Добавлено через 13 минут
0
|
||
| 03.11.2024, 17:09 [ТС] | |||||||||||||
|
Добавлено через 5 минут баз64 в вебе используется. На сайте planetaexcel еси вставить картинку из буфера в редактор, она автоматически преобразуется в base64 со спциальным заголовком. Потом можно этот баз64 вставить в строку браузера и он автоматически преобразует его в картинку Добавлено через 7 минут Преобразование файла в Base64_VBCode Кликните здесь для просмотра всего текста
Добавлено через 1 минуту Добавлено через 38 минут Еще идея появилась, как можно записать конкатенацию большого колличества строк. Правда не известно, есть ли ограничение у ParamArray
1
|
|||||||||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 03.11.2024, 17:50 | ||
|
Добавлено через 1 минуту testuser2, ансишную строку так и не получилось у тебя создать?
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 18:00 | |
|
testuser2, как это может быть меньше чем размер самого фала? не понимаю
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 18:27 | |
|
testuser2, у меня раньше была вообще старая технология, давно, 20 лет назад, с братом я писал программу, которая любой абсолютно файл превращает в модуль для создания этого файла. Программа эта у нас называлась All2Bas
Сейчас я для интереса посмотрел, созданный модуль (для создания DLL файла) занимает аж целых 2 мегабайта. Это вообще жесть. А сам EXE раздувается ажно до 6 мегабайт! Это просто жесть! Можешь посмотреть для интереса. Я и понятия не имел даже про base64.
1
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 18:41 | |
|
А сам код собирания файла разбивается ажно на 68 разных процедур для этого файла... Из-за ограничений VB6 по объёму кода в одной процедуре...
Добавлено через 11 минут testuser2, я не знал вообще про технологию base64, но на основе этой технологии можно тогда написать систему для проигрывания WAV-файла, не из ресурсов EXE-файла, а из закодированной строки base64 тогда получается.
0
|
|
| 03.11.2024, 18:48 [ТС] | ||
|
Я сжимал зип-сжатием с макс. уровнем компрессии, перед тем как преборазовать в баз64.
Здесь есть баз64 на чистом VB вроде Добавлено через 4 минуты Добавлено через 2 минуты вернее не плотностью а объемом, плотность была бы в 2 раза выше
1
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|||||||
| 03.11.2024, 18:54 | |||||||
|
там они потом перекодируют в utf8 думаю можно так же и в ansi но в данном случае думаю что utf8 будет тоже самое что и ansi Добавлено через 3 минуты Либо смотри сделать обычной конвертацией если без API Как там было сделано у человека вот
Хотя подожди сама фишка заключается в том что VB6 по умолчанию хранит строки в юникоде. Когда ты пишешь строка = содержимое. Значит ничего не изменить уже получается никакими API?
0
|
|||||||
| 03.11.2024, 19:00 [ТС] | ||
|
Если 7zip с уровнем компрессии "ультра" сжать, то можно выиграть еще 20% в сравнении с zip
Добавлено через 3 минуты
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 19:01 | |
|
testuser2, кстати хотел спросить, а версия zlibwapi.dll которую ты прикрепил это последняя версия 1.2.8
???
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 19:07 | |
|
testuser2, у меня вот версия 1.2.3 занимает всего 74 Кб, её более выгодно тогда использовать, почти на 100Кб меньше
Добавлено через 40 секунд Хотя можно попробовать твою версию сжать UPX тогда будет меньше точно, сейчас попробую, в скорости там вряд ли проиграем Добавлено через 1 минуту testuser2, после сжатия упэиксом твоя библиотека стала занимать 89Кб Добавлено через 55 секунд testuser2, а моя, после сжатия, стала всего 43 Кб
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|||
| 03.11.2024, 19:25 | |||
|
Добавлено через 29 секунд Добавлено через 1 минуту testuser2, а если попробовать байтовому массиву присвоить строку? тоже самое будет в EXE-файле в юникоде в итоге? не пробовал? или так не получится? Наверное любое содержимое внутри кода взятое в двойные ковычки будет кодироваться в юникоде? Добавлено через 1 минуту Но как строка base64 в итоге становится меньше по размеру чем сам файл я так и не понял этого чуда. Добавлено через 2 минуты Альтернатива только одна - зашивать в настоящие ресурсы EXE получается, плюс можно ещё сжать этот буфер функциями сжатия из ntdll.dll для того чтобы было меньше байт в итоге... Добавлено через 3 минуты Пока короче я за основу буду рать твой файл версии 1.2.8 без сжатия размером 171008 байт
0
|
|||
| 03.11.2024, 19:28 [ТС] | |||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 19:34 | |
|
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 19:52 | |
|
В общем я сделал извлечение DLL-файла из ресурсов. EXE файл при этом откомпилированный занимает всего 192 Кб против 278 по технологии testuser2.
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 03.11.2024, 20:05 | |
|
Сейчас ещё сделаю вторую версию с компрессией буфера, с помощью API-функций из ntdll.dll там будет создание DLL файла из ресурсов из сжатого буфера и количество байт конечно будет очень уменьшено.
Добавлено через 2 минуты Есть же великолепные функции RtlCompressBuffer и RtlDecompressBuffer их я и планирую использовать, чтобы уменьшить количество байт данных. Добавлено через 4 минуты Упакованный файл с помощью RtlCompressBuffer будет занимать уже 125047, не сильно сжало конечно... Добавлено через 2 минуты Но это лучше чем методом хафмана там 145 Кб где-то выходной буфер получался Добавлено через 1 минуту Но и хуже чем UPX если так подумать... Но упакованные DLL в UPX зато работают чуть медленнее поэтому не будем так упаковывать через UPX уже...
0
|
|
| 03.11.2024, 20:05 | |
|
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 и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|