|
Вопрощающий
|
|
Создание (+распаковка) CAB архива11.10.2009, 19:26. Показов 10837. Ответов 130
Метки cabinet.dll (Все метки)
|
|
| 11.10.2009, 19:26 | |
|
Ответы с готовыми решениями:
130
Создание архива Программное создание архива. Создание архива с паролем |
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||||||||||
| 22.11.2024, 12:20 | |||||||||||
|
Надстройку же не подключишь в VBA
Добавлено через 37 минут testuser2, а у fafalone вот так вот это кстати описано в его библиотеке для твинбейсика:
0
|
|||||||||||
| 22.11.2024, 15:10 | ||||||
|
Я не пойму зачем у уважаемого fafalone столько скобок, и явных приведений к integer. Вообще если обрамлять скобками аргумент функции, то это какбы неявное приведение к ByVal, не знаю, правда, как это работает в выражениях, но я стараюсь просто всегда избегать лишних скобок. Небольшой тестик
Добавлено через 6 минут Тут еще нюанс, что VarPtr работает как библиотечная функция, и там принцип передачи аргументов немного иной нежели в VB-функция. Если передать аргумент в скобках в VB-фнукцию будет полное копирование и переменной и данных Добавлено через 50 минут Скобки это привидение к варианту, вот это что, это также как cVar()
1
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 22.11.2024, 15:18 | ||
|
Добавлено через 28 секунд testuser2, твой код мне больше понравился, чем фафалоновский, твоя функция лучше, мне больше нравится
0
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 22.11.2024, 15:30 | ||||||
|
Ну красивее же код у тебя, согласись, ну
Хотя у тебя процедура, а не функция, у тебя немного по другому.
0
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||||||||||
| 22.11.2024, 15:57 | |||||||||||
|
ааааа с функцией же легче работать, чем с процедурой, значит у фафалона всё-таки код лучше, хотя зачем так много скобок там и ещё и Integer тоже не понимаю этого совсем
Добавлено через 38 секунд а давай проверим тогда в Твине, чем гадать Добавлено через 8 минут Короче проверил, его функция работает так же как и твоя процедура. Тоже самое значение возвращает. Попробовал так же убрать первую и последнею лишнею скобку тоже всё работает после этого прекрасно. Добавлено через 2 минуты Я вообще не понимаю зачем у него ТАК МНОГО скобок лишних, я их короче поубирал все, к чёртовой матери, вот теперь так:
Добавлено через 29 секунд И вопрос зачем там CInt тоже не понимаю, если честно. Добавлено через 24 секунды Пожалуй, надо фафалону мозги покомпосировать по этому поводу) Добавлено через 8 минут Я проверил можно упростить даже вот так:
Добавлено через 2 минуты testuser2, https://www.vbforums.com/showt... ost5663272
0
|
|||||||||||
| 22.11.2024, 16:22 | ||
|
0
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 22.11.2024, 16:28 | |
|
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 23.11.2024, 07:55 | |
|
Мой алгоритм кстати не идеален, для создания CAB с несколькими файлами внутри что-то у меня там не так как надо работает. Вроде всё норм, в проводнике винды и в новом TotalCommander вроде нормально всё отображается, а вот в старой версии TotalCommander отображается неправильно уже содержимое архива, если несколько файлов, то оно почему на второй, третитй и т.д. файлы уже почему-то добавляет в самом начале файла плюсик (символ "+") хотя такого просто быть не должно... баг значит у меня где-то в загаловочниках может... ну такой полу-баг... в новых версиях-то всё работает...
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 23.11.2024, 07:59 | |
|
Вот такой вот баг получается, что добавляет символ плюса зачем-то. И эти папки и/или файлы, с символом плюса, уже не читаются потом... В старой версии тотал коммандера, у меня. В новой всё норм отображается и всё читается как надо.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||||||||||
| 23.11.2024, 10:19 | |||||||||||
|
Где-то я накосячил в коде может. А самые новые версии умеют распознавать и игнорировать такие косяки...
Добавлено через 1 час 35 минут Ура! Я нашёл где косяк. Чтобы кэбы читались везде-везде хорошо, нужно по другому определять изначальные значения структуры ccab для FCICreate. За основу я теперь взял уже пример из MSDN: https://learn.microsoft.com/ru... -a-cabinet Лучше всего всегда переписывать из примеров от Microsoft конечно же, чтобы избегать косяков... А до этого я переписывал у немцев с Delphi отсюда: https://www.viathinksoft.com/codelib/206 Вообще я и был вдохновлён, этой статьёй у немцев, этим готовым кодом на Delphi, а оказывается косяки там... Так же я был вдохновлён статьёй где рассказывалось как обманывать технологию сжатия/распаковки не в файлы а в IStream в память, вот здесь: https://habr.com/ru/articles/314832/ Добавлено через 8 минут Кто бы мог подумать, у немцев ошибка в коде была, поэтому когда я переписывал функцию с Delphi то и у меня тоже такой же косяк поэтому получился. Добавлено через 1 минуту А всего-то они забыли объявить cbFolderThresh = И только из-за этого в старых версиях архиваторов CAB не читалось как надо, и было с глюками Добавлено через 3 минуты Вот я переписывал этот немецкий код с Delphi:
Добавлено через 5 минут Чтобы это исправить, нужно просто в определении структуры добавить:
Я исправил ошибки в коде! Добавлено через 7 минут А немцы переписывали у китайцев, этот код, кстати, так что изначально могли ошибку допустить китайцы... А теперь я русский переписал код у немцев, которые переписали у китайцев... А лучше всего конечно всего переписывать из MSDN...
0
|
|||||||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 23.11.2024, 10:22 | ||
|
Добавлено через 12 секунд И ошибки тоже...
0
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 23.11.2024, 10:35 | ||||||
Сообщение было отмечено HackerVlad как решение
Решение
Теперь вот новая версия модуля, без ошибок уже:
1
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 23.11.2024, 22:03 | |
|
testuser2, кстати fafalone выложил 64-битную версию модуля, как раз для тебя))) ты же любишь 64))) я его даже не просил он сам решил написать 64 битно-совместимую версию) Вот здесь посмотри: https://www.vbforums.com/showt... ost5663417
Особенно забавно какие комментарии он оставил к моему модулю, мне больше всего понравилась фраза "Некоторые из использованных вами хаков немного свели меня с ума..." ахахахахах Добавлено через 3 минуты Будет ли только в VBA7 работать это большой вопрос конечно, проверять надо. Особенно непонятно как там будет себя чувствовать CDecl.
0
|
|
| 24.11.2024, 05:56 | |||||||||||||
Хотя я замечал в Твин-бейские такую странность там в vbaCopyBytes размер именно Long, хотя по сути, в среде x64 это урезает его возможности, больше 2 гигов не скопируешь
0
|
|||||||||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 24.11.2024, 12:19 | ||
|
Добавлено через 1 минуту CAB всё равно не поддерживает файлы больше 2 Гб, так что нафига там копировать LongPtr таких больших данных быть не может просто
0
|
||
| 24.11.2024, 12:19 | |
|
Помогаю со студенческими работами здесь
60
Создание установочного архива для своих любимых программ Распаковка архива rar без сохранения файла во временную папку Создание архива с паролем средствами PB. Возможно? Создание cab архива
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|