Работа с zip архивами29.10.2024, 02:49. Показов 24770. Ответов 283
Метки нет (Все метки)
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.
Добавлено через 1 минуту кстати словосочетание zip-архивами в названии форум блочит почему-то )Добавлено через 6 минут На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
|
||||||
| 29.10.2024, 02:49 | |
|
Ответы с готовыми решениями:
283
Работа с ZIP-архивами - распаковка файлов Автоматизировать заполнение "Графика выполненных работ по месяцам" Задания из лаб.работ |
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
||
| 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
|
|||||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
||
| 03.11.2024, 17:50 | ||
|
Добавлено через 1 минуту testuser2, ансишную строку так и не получилось у тебя создать?
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 03.11.2024, 18:00 | |
|
testuser2, как это может быть меньше чем размер самого фала? не понимаю
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 03.11.2024, 18:27 | |
|
testuser2, у меня раньше была вообще старая технология, давно, 20 лет назад, с братом я писал программу, которая любой абсолютно файл превращает в модуль для создания этого файла. Программа эта у нас называлась All2Bas
Сейчас я для интереса посмотрел, созданный модуль (для создания DLL файла) занимает аж целых 2 мегабайта. Это вообще жесть. А сам EXE раздувается ажно до 6 мегабайт! Это просто жесть! Можешь посмотреть для интереса. Я и понятия не имел даже про base64.
1
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 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
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|||||||
| 03.11.2024, 18:54 | |||||||
|
там они потом перекодируют в utf8 думаю можно так же и в ansi но в данном случае думаю что utf8 будет тоже самое что и ansi Добавлено через 3 минуты Либо смотри сделать обычной конвертацией если без API Как там было сделано у человека вот
Хотя подожди сама фишка заключается в том что VB6 по умолчанию хранит строки в юникоде. Когда ты пишешь строка = содержимое. Значит ничего не изменить уже получается никакими API?
0
|
|||||||
| 03.11.2024, 19:00 [ТС] | ||
|
Если 7zip с уровнем компрессии "ультра" сжать, то можно выиграть еще 20% в сравнении с zip
Добавлено через 3 минуты
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 03.11.2024, 19:01 | |
|
testuser2, кстати хотел спросить, а версия zlibwapi.dll которую ты прикрепил это последняя версия 1.2.8
???
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 03.11.2024, 19:07 | |
|
testuser2, у меня вот версия 1.2.3 занимает всего 74 Кб, её более выгодно тогда использовать, почти на 100Кб меньше
Добавлено через 40 секунд Хотя можно попробовать твою версию сжать UPX тогда будет меньше точно, сейчас попробую, в скорости там вряд ли проиграем Добавлено через 1 минуту testuser2, после сжатия упэиксом твоя библиотека стала занимать 89Кб Добавлено через 55 секунд testuser2, а моя, после сжатия, стала всего 43 Кб
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|||
| 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
|
|||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 03.11.2024, 19:34 | |
|
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 03.11.2024, 19:52 | |
|
В общем я сделал извлечение DLL-файла из ресурсов. EXE файл при этом откомпилированный занимает всего 192 Кб против 278 по технологии testuser2.
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,830
|
|
| 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? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|