Работа с zip архивами29.10.2024, 02:49. Показов 22048. Ответов 283
Метки нет (Все метки)
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.
Добавлено через 1 минуту кстати словосочетание zip-архивами в названии форум блочит почему-то )Добавлено через 6 минут На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
|
||||||
| 29.10.2024, 02:49 | |
|
Ответы с готовыми решениями:
283
Работа с ZIP-архивами - распаковка файлов Автоматизировать заполнение "Графика выполненных работ по месяцам" Задания из лаб.работ |
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 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
|
|||||||||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 03.11.2024, 17:50 | ||
|
Добавлено через 1 минуту testuser2, ансишную строку так и не получилось у тебя создать?
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 03.11.2024, 18:00 | |
|
testuser2, как это может быть меньше чем размер самого фала? не понимаю
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 03.11.2024, 18:27 | |
|
testuser2, у меня раньше была вообще старая технология, давно, 20 лет назад, с братом я писал программу, которая любой абсолютно файл превращает в модуль для создания этого файла. Программа эта у нас называлась All2Bas
Сейчас я для интереса посмотрел, созданный модуль (для создания DLL файла) занимает аж целых 2 мегабайта. Это вообще жесть. А сам EXE раздувается ажно до 6 мегабайт! Это просто жесть! Можешь посмотреть для интереса. Я и понятия не имел даже про base64.
1
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 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
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||
| 03.11.2024, 18:54 | |||||||
|
там они потом перекодируют в utf8 думаю можно так же и в ansi но в данном случае думаю что utf8 будет тоже самое что и ansi Добавлено через 3 минуты Либо смотри сделать обычной конвертацией если без API Как там было сделано у человека вот
Хотя подожди сама фишка заключается в том что VB6 по умолчанию хранит строки в юникоде. Когда ты пишешь строка = содержимое. Значит ничего не изменить уже получается никакими API?
0
|
|||||||
| 03.11.2024, 19:00 [ТС] | ||
|
Если 7zip с уровнем компрессии "ультра" сжать, то можно выиграть еще 20% в сравнении с zip
Добавлено через 3 минуты
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 03.11.2024, 19:01 | |
|
testuser2, кстати хотел спросить, а версия zlibwapi.dll которую ты прикрепил это последняя версия 1.2.8
???
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 03.11.2024, 19:07 | |
|
testuser2, у меня вот версия 1.2.3 занимает всего 74 Кб, её более выгодно тогда использовать, почти на 100Кб меньше
Добавлено через 40 секунд Хотя можно попробовать твою версию сжать UPX тогда будет меньше точно, сейчас попробую, в скорости там вряд ли проиграем Добавлено через 1 минуту testuser2, после сжатия упэиксом твоя библиотека стала занимать 89Кб Добавлено через 55 секунд testuser2, а моя, после сжатия, стала всего 43 Кб
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||
| 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
|
|||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 03.11.2024, 19:34 | |
|
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 03.11.2024, 19:52 | |
|
В общем я сделал извлечение DLL-файла из ресурсов. EXE файл при этом откомпилированный занимает всего 192 Кб против 278 по технологии testuser2.
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 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? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|