Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1

Работа с zip архивами

29.10.2024, 02:49. Показов 18716. Ответов 282
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Из всего, что попадалось по теме сжатия/распаковки ZIP наиболее интересные были примеры с использованием библиотеки Zlib. Оригинальная zlib использует cdecl экспорт функций, но есть реализация zlibwapi.dll, которую можно использовать в VB. Вот хороший пример использования. Там можно увидеть как сжть/распаковать массив байтов, но вот беда, очень сложно найти пример под VB с более обширным использованием, способной на большее, данной либы, которая не есть простая, там есть функции с использованием множества параметров констант и длинных структур, которые чтобы узнать наверное надо долго копатся в сишных заголочниках. Но HackerVlad в личной беседе говорил, что у него есть исходники с использованием данной библиотеки, поэтому любезно прошу его поделиться данной информацией.

Добавлено через 1 минуту
кстати словосочетание zip-архивами в названии форум блочит почему-то )

Добавлено через 6 минут
На одном форуме есть хороший пример испльзования функций zlib для извлечения/распаковки отдельных файлов, там
Кликните здесь для просмотра всего текста
обсуждался какой-то экзотический ЯП Clarion, но очень наглядно
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
! Источнег: https://forum.clarionlife.net/viewtopic.php?t=2389
! Для добавления в архив PwlZip ваш пароль
ZipHandle = zipOpen(NEW_ZIPPACK, 0)
If EncryptFlag = 1
Res# = zipOpenNewFileInZip3(ZipHandle, PATH_CURZIP, Zinfo, 0, 0, 0, 0, Comment, Z_DEFLATED, CompressionFlag,0,-15,8,0,PwlZip,0)
Else
Res# = zipOpenNewFileInZip(ZipHandle, PATH_CURZIP, Zinfo, 0, 0, 0, 0, Comment, Z_DEFLATED, CompressionFlag)
.
 
!Для чтения из архива
ZipHandle = unzOpen(PATH_INFILE_PACK)
LocRes1=UnzGoToFirstFile(ZipHandle)
If unzGetCurrentFileInfo(ZipHandle,FinFo,PATH_NAMEUPD_TMP,Size(PATH_NAMEUPD_TMP),0,0,Comment,Size(Comment)).
If FinFo.Flag = 3 !признак шифрованного zip по крайней мере так я понял после мыкания с архивами
LocRes2 = unzOpenCurrentFilePassword(ZipHandle,PwlZip)
Else
LocRes2 = UnzOpenCurrentFile(ZipHandle)

Здесь подробное описание функций, структур и констант, однако я не нашел там unzGetCurrentFileInfo и т.п.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2024, 02:49
Ответы с готовыми решениями:

Работа с ZIP-архивами - распаковка файлов
Привет, уважаемый ALL! Подскажите, как можно работать с zip архивами из VBA? Стоит задача: 1) прочитать из архива...

Автоматизировать заполнение "Графика выполненных работ по месяцам"
Используя готовую рабочую книгу Blank1.xls, автоматизировать заполнение "Графика выполненных работ по месяцам". Из диапазона дат в...

Задания из лаб.работ
Надоедаю наверное уже всем...

282
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
06.11.2024, 16:58
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от testuser2 Посмотреть сообщение
Это также как "жюри, брощюра, паращют"
Самое смешное что эти правила ни раз менялись то через Ю то снова возвращали через У писать то опять снова через Ю

Добавлено через 10 минут
Я лично помню как ещё в 2001 году по телевизору показывали как сам Путин говорил о том что мы будем писать парашют через букву У, и почему-то мы сейчас пишем через Ю

Добавлено через 3 минуты
И я насмотревшись телевизора тогда пришёл в школу и начал писать парашУт через букву У, за что мне училка влепила двойку, а ей такой говорю: вы что телевизор не смотрели о новых правилах? а ей всё равно было.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
07.11.2024, 04:36
testuser2, кстати вот тут есть ещё тема как работать с 7z архивами: https://www.vbforums.com/showt... ip-support

Добавлено через 4 минуты
И кстати я сейчас заметил что дельты сжимают почти так же хорошо как 7ZIP а архивы 7z это самые лучшие
1
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
07.11.2024, 07:46  [ТС]
HackerVlad, какбы эти дельты под x64 еще заюзать

Добавлено через 1 минуту
А то душа не на спокое уже от етого

Добавлено через 2 часа 55 минут
Причем на x86 если у этой функции задать другое кол-во аргументов, и сделать простой вызов с нулями, то выйдет ошибка "bed DLL conversion", но на x64 именно она вызывает ислючение. Надо еще попробовать DeltaW и DeltaA
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
07.11.2024, 12:22
testuser2, а ты пробовал читать MSDN? Или там ничего не понятно по этому поводу?
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
07.11.2024, 12:58  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
а ты пробовал читать MSDN?
Я тебе перекрестный вопрос скажу, а ты пропробуй найти где написано что флаги DELTA_FILE_TYPE и DELTA_FILE_TYPE 64-битные (8 байт), вот просто интересно где про это написано, допустим, это как пример.

Добавлено через 2 минуты
Где в MSDN указаны значения этих флагов типа DELTA_FLAG_IGNORE_FILE_SIZE_LIMIT?
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
07.11.2024, 13:12
Цитата Сообщение от testuser2 Посмотреть сообщение
На x64 чудо-функции запустить не получилось.
Разве VB компилирует в x64?
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
07.11.2024, 13:58  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Разве VB компилирует в x64?
Представьте себе да, если к VB добавить еще буквочку A или заменить на TB )

Добавлено через 30 минут
locm, можно несколько вопросов для интервью ) Ранее вы продемонстрировали крутые возможности возможности Pure Basic, которые даже трудно достижимые в C++, как заметил HackerVlad, посему интересно было бы узнать еще некоторые моменты.
1) Поддериваются ли в PB разные типы строк Ansi, Utf-16 (Utf-8..) как базовые типы?
2) Поддерживается ли в PB передача UDT по значению (ByVal)?
3) Есть ли в PB встроенные функции копирования памяти?
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
07.11.2024, 14:28
Цитата Сообщение от testuser2 Посмотреть сообщение
Представьте себе да, если к VB добавить еще буквочку A
Тогда это другой раздел https://www.cyberforum.ru/vba/

Цитата Сообщение от testuser2 Посмотреть сообщение
Поддериваются ли в PB разные типы строк Ansi, Utf-16 (Utf-8..) как базовые типы?
Раньше было, но с версии 5.40 отменили ascii, т. к. сейчас не актуально.

Цитата Сообщение от testuser2 Посмотреть сообщение
Поддерживается ли в PB передача UDT по значению (ByVal)?
Только строки и простые типы.

Цитата Сообщение от testuser2 Посмотреть сообщение
Есть ли в PB встроенные функции копирования памяти?
https://www.purebasic.com/docu... index.html

Есть псевдотипы - автоконвертация кодировки строки при вызове функции из сторонних библиотек https://www.purebasic.com/docu... types.html
1
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
07.11.2024, 14:58  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Тогда это другой раздел https://www.cyberforum.ru/vba/
Извините товарищь вахтер, не знал что есть такой раздел, спасибо за столь ценную информацию
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
07.11.2024, 16:24
Товарищу locm тоже можно было сказать тогда это другой раздел PureBasic)))

Добавлено через 1 минуту
Цитата Сообщение от locm Посмотреть сообщение
Раньше было, но с версии 5.40 отменили ascii, т. к. сейчас не актуально.
Очень даже актуально когда в коде хочешь хранить гигантскую строку base64 чтобы она не занимала в два раза больше байт потом в EXE файле. Позор разработчикам что убрали это.

Добавлено через 22 минуты
testuser2, я кстати сейчас посмотрел, что у 7zip открытый исходный код
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
07.11.2024, 16:29
Народ, здесь было упоминания про x64 но без уточнения что это VBA. Вот я и спросил какие 64 бит в VB6.

Цитата Сообщение от HackerVlad Посмотреть сообщение
Очень даже актуально когда в коде хочешь хранить гигантскую строку base64 чтобы она не занимала в два раза больше байт потом в EXE файле.
Зачем в коде? Сохраните в ресурсе в ascii. В чем сложность?

Цитата Сообщение от HackerVlad Посмотреть сообщение
Позор разработчикам что убрали это.
Если речь про PureBasic, то проблемы вообще нет. Бинарный файл подключается командой IncludeBinary и не нужно никаких ухищрений типа base64.
А если нужно то в PB есть функция Base64DecoderBuffer() которая может декодировать бинарные данные.
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
07.11.2024, 16:40  [ТС]

Не по теме:

Я извиняюсь за немножко пафосность, но по моему (и не только) мнению вахтеризм убивает форумы. И речь не о том, чтобы устроить полный бардак в разделах, а о том, что рассматривая какой-то предмет, гораздо лучше иметь более широкое представление и сравнение с др. похожими предметами. Т.е. широкий кругозор, дает больше понимания. Второе, если углубиться немножко в историю создания само устройство VB6, можно понять, что VB6, VBA и даже VBS это детища одной утробы, это мжоно сказать какбы ветки единой экосистемы. И развивающийся сейчас TB реализуется именно таким образом, чтобы идеально встроиться в эту экосистему. Это можн сравнить со всесторонне развитым сейчас JS. VBA и VB6 это настолько совместимые среды, что легко можно код (не касающийся объектной модели) который будет работать в VB6 и VBAx86-64 с небольшими правками. Мне также нравится, когда здесь можно обсудить какие-то моменты, Pure Basic-а, Delfi, даже JS, почему нет. Почему не обсудить, допустим взаимодействие языков и т.д. А вахтерские форумы давно уже умерли, там сидят сторожевые собаки и изредка лают на приблудившихся странников



Добавлено через 7 минут
Цитата Сообщение от locm Посмотреть сообщение
Если речь про PureBasic, то проблемы вообще нет. Бинарный файл подключается командой IncludeBinary и не нужно никаких ухищрений типа base64.
А если нужно то в PB есть функция Base64DecoderBuffer() которая может декодировать бинарные данные.
Интересно как в вашей логике укладывается, что вы можете сдесь спокойно обсуждать нюансы работы Pure Basic (я кстати не против), но при этом указывать мне на наличие других разделов форума. Давайте быть логичны и последовательны, а то получается одни меньше равны чем другие, тогда это получается полная лажа

Добавлено через 1 минуту
Цитата Сообщение от testuser2 Посмотреть сообщение
одни меньше равны чем другие
В таком случае я буду требовать революцию!!
0
07.11.2024, 16:42

Не по теме:

Цитата Сообщение от testuser2 Посмотреть сообщение
Интересно как в вашей логике укладывается, что вы можете здесь спокойно обсуждать нюансы работы Pure Basic
Меня спросили, я ответил.
Мне все равно обсуждается здесь VB или VBA. Просто если не VB, то это уточнять нужно чтобы не было путаницы.

0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
07.11.2024, 17:00  [ТС]
Кстати в ближайшее время надо заняться Дельфином, и попытаться переработать один код на VB.

Добавлено через 2 минуты

Не по теме:

Просто я хотел сказать, что МС чего-то там нахитрожопили с той функцией, но я не будут конечно это говорить..

0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
07.11.2024, 17:09
Цитата Сообщение от locm Посмотреть сообщение
Зачем в коде? Сохраните в ресурсе в ascii. В чем сложность?
Не все хотят хранить в ресурсах, так как ресурсы легко открываются и легко взламываются.
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
07.11.2024, 17:17
Зашифровать данные. AES или что-то подобное.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
07.11.2024, 17:47
Цитата Сообщение от locm Посмотреть сообщение
Зашифровать данные. AES или что-то подобное.
Ну ты же читал тему, ну, мы и так умеем упаковывать данные они там и так будут как бы зашифрованными. Однако не все люди хотят хранить данные именно в ресурсах. Тут ты должен поддержать и скать , что да почему они плохие такие не сделали хранение Анси строк ну

Добавлено через 45 секунд
Я ситаю это огромным упущением просто со стороны разработчиков ЯП

Добавлено через 4 минуты
Цитата Сообщение от testuser2 Посмотреть сообщение
надо заняться Дельфином
Что касается Borland Delphi то там строки хранятся в ANSI кстати

Добавлено через 1 минуту
Цитата Сообщение от testuser2 Посмотреть сообщение
и попытаться переработать один код на VB
Хорошо было бы переписать модуль для работы с CAB который я давал на Дельфи, переписать его на VB, но с другой стороны, оно нам надо? там сложный код и его сложно переписывать, три дня точно потратишь, особенно сложно что там 10 call-back функций обратного вызова

Добавлено через 3 минуты
Цитата Сообщение от locm Посмотреть сообщение
Мне все равно обсуждается здесь VB или VBA. Просто если не VB, то это уточнять нужно чтобы не было путаницы.
Я лично сразу понял что речь идёт о 64-битном VBA. Мне лично не интересно это, так как на VBA я не программирую и 64 бита мне не надо, но понял я всё равно сразу. Ну пусть у testuser2 всё получится. Просто для vb6 это не актуально вообще.
0
07.11.2024, 18:11

Не по теме:

Цитата Сообщение от HackerVlad Посмотреть сообщение
Что касается Borland Delphi то там строки хранятся в ANSI кстати
То есть на винде не для региона RU текст станет не читаемым? Китайский/японский/арабский и др. в пролете?
Повторюсь, кодировка ascii давно устарела.

Цитата Сообщение от HackerVlad Посмотреть сообщение
64 бита мне не надо
Система x86? Мало у кого она сейчас, т .к. ограничение 4 ГБ ОЗУ очень существенное. Хватит памяти только для ОС.
То есть x86 приложения считайте что устаревшие и работают в режиме совместимости.
То есть давно пора задуматься о переходе на x64 платформу.

0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
07.11.2024, 18:20
Цитата Сообщение от locm Посмотреть сообщение
Система x86? Мало у кого она сейчас
64 и что, что мешает мне запускать 32-бдитные программы

Добавлено через 56 секунд
Цитата Сообщение от locm Посмотреть сообщение
То есть на винде не для региона RU текст станет не читаемым? Китайский/японский/арабский и др. в пролете?
Юникод там тоже есть скорее всего не вникал

Добавлено через 55 секунд
Главное это что, чтобы ЯП предоставлял нам право выбора как хранить строки в ANSI или в Unicode, хотябы для того чтобы экономить память где мне не нужен Unicode

Добавлено через 57 секунд
Я уже говорил огигантских строках base64 и повторятсья не хочу, это основная задача хранить строки в Анси только для этого чтобы экономить место
0
07.11.2024, 18:26

Не по теме:

Цитата Сообщение от HackerVlad Посмотреть сообщение
хотябы для того чтобы экономить память где мне не нужен Unicode
В приложениях не нужны длинные константные строки и экономия нескольких КБ ни на что не повлияет.

Цитата Сообщение от HackerVlad Посмотреть сообщение
Я уже говорил о гигантских строках base64
Зачем? base64 увеличивает размер данных, а не уменьшает их. Храните как бинарные данные и тем самым уменьшите занимаемый объем.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2024, 18:26
Помогаю со студенческими работами здесь

access и zip архив
Привет всем! Подскажите... если есть возможность сохранение файла в zip архив Dim FileHeder As String Dim filePath As String ...

Как распаковать ZIP-файл в 7z?
'При помощи VBA WinRAR распаковывает архив в папку … q = Адрес_сохранения_файла 'путь к каталогу, то есть к папке, в конце пути для...

ребята!завтра надо сдать работу,а без этих работ никак((
алгоритмы линейной структуры 1) СОСТАВИТЬ ПРОГРАММУ ВЫЧИСЛЕНИЯ СРЕДНЕГО ЗНАЧЕНИЯ ТРЕХ ВЕЛИЧИН 2) ПОДСЧИТАТЬ И ВЫВЕСТИ НА ЭКРАН СУММУ И...

Замена файла в zip архиве при совпадении имени
Есть несколько excel файлов. например, 1.xls, 2.xls, 3.xls Есть куча zip архивов. например, A (1.xls), B (1.xls,5.doc,3.doc), C (3.xls),...

Как сделать архив zip?
Как сделать архив zip? Какие нужны библиотеки и где их взять? заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru