Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.08.2020
Сообщений: 14
Delphi 6-7

Работа с библиотекой SevenZipVCL 076

04.06.2023, 09:37. Показов 1208. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день , коллеги.

Использую библиотеку SevenZipVCL 076 + 7a.dll (результат работы везде один и тот же, что в Delphi 7, C++Builder 6, Delphi Rio 10.3).

Вообщем, фрагмент кода для добавления файлов в будущий 7z (zip) архив:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure Test;
var
zip:TSevenZIPVCL;
begin
 
 ...
 //добавляем файлы для архивации
 zip.FileList.Clear;
 zip.FileList.Add('c:\temp\folders\*.*');
 
 ...
 
 //непосредственно архивируем
 zip.Add;
end;
Вообщем, все нормально, все архируется, до тех пор пока не приходится столкнуться с сжатием длинных файловых путей.

В документации в MSDN сказано, что тогда к имени файла необходимо добавлять префикс \\?\.
К примеру имеется папка c:\temp\3333333333333333\*.* и там много еще вложенных и все это естественно больше чем 256 символов, получается, код:
Delphi
1
2
3
4
5
.......
 
 zip.FileList.Clear;
 zip.FileList.Add('\\?\c:\temp\33333333333333\*.*');
 zip.Add;
В итоге длинные пути в архив добавляются, но также появляется еще какая фигня в виде огрызков
Содержимое архива становиться следующее:
c:\temp\3333333333333\ дальше ничего нет пусто
_\c_\temp\3333333333333333\.... \......\testfile.txt

Если префикс \\?\ убираем, то соответственно папки с длинными путями не попадают в архив.


Откуда берется пустая папка c:\temp\3333333333333\?
Откуда появляется _ , c_ вообще не понятно?

Ну и вишенка на торте , что такой архив не хочет распаковываться из проводника, файлового менеджера и т.д., только если дойти до самого файла в глубине и его непосредственно вытащить, если просто зайти в архив и попытаться вытащить сам каталог temp, то все в отказ, сообщение, что ошибка распаковки.

П.С.
Все бы ничего, но туже самую библиотеку и dll использует к примеру Cobian Backup , и так все прекрасно работает с длинными путями. Вообщем, кто , что думает? Подскажите пожалуйста куда копать? В самой библиотеку все перепробовал, результат один и тот же.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2023, 09:37
Ответы с готовыми решениями:

Упростить выражение - № 1.076
Не соображу, что тут можно ещё сделать, в первой дроби, что приходит в голову и что очень хочется сделать это избавиться от многоэтажности:...

SevenZipVCL & Delphi
Все доброго времени суток......уважаемый профессионала подскажите как установить компонент SevenZipVCL, и если есть возможность дайте...

Работа с библиотекой
Ребят помогите пожалуйста, 1 курс всего. Я создал библиотеку, работаю в ней, но для того кто бы открыть пункт меню приходиться каждый раз...

2
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
04.06.2023, 09:50
Цитата Сообщение от prot56k Посмотреть сообщение
В документации в MSDN сказано, что тогда к имени файла необходимо добавлять префикс \\?\.
Вы же не путь к файлу задаете, а маску поиска файлов. Вы сначала получите полное имя к файлу и уже к этому пути добавляйте префикс.
0
0 / 0 / 0
Регистрация: 26.08.2020
Сообщений: 14
04.06.2023, 10:59  [ТС]
Я и так и так пробовал. И по маске и непосредственно имя файла указывал, все бестолку. Результат один и тот же.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.06.2023, 10:59
Помогаю со студенческими работами здесь

Работа с GD библиотекой
Как можно реализовать передачу изображения созданного с помощью GD библиотеки в twitter ?

Работа с библиотекой
Нужно создать 3 функции в библиотеке по имени, по индексу, по совпадающему имени. New--Other--Dll Wizard. Я создал для проверки хотя бы...

Работа с библиотекой
В чем ошибка? 1.unit2.pas(57,58) Error: Fields cannot appear after a method or property definition, start a new visibility section first ...

Работа с библиотекой
Вобщем пытаюсь сделать прогу для торговли на фондовой бирже на VB 2008. скачал терминал с поддержкой работы с COM-объектами, но...

Работа с GD библиотекой
Доброго времени суток товарищи, нуждаюсь в помощи, в общем есть класс для нанесения текста на изображение, там есть функция которая пишет...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Кэш REDIS и C#
UnmanagedCoder 01.06.2025
Redis (Remote Dictionary Server) - это ультраскоростное хранилище данных в оперативной памяти, работающее по принципу "ключ-значение". Суть проста: данные хранятся не на диске, а прямо в RAM, что. . .
Lenovo IH110CX Rev 1.0 user manual
Maks 01.06.2025
Размещения без повторений
VistaSV30 31.05.2025
Код возвращает список вариантов размещений A^{k}_{n}=\frac{n!}{(n-k)!} from itertools import permutations def pwr(k, n): # Размещение без повторений (Placement without repetition) if k. . .
Redis и Node.js с TypeScript - решения для высоконагруженных систем
Reangularity 31.05.2025
Redis (Remote Dictionary Server) — сверхбыстрое хранилище данных в памяти, способное обрабатывать операции за микросекунды. И что особенно важно для нас — с удивительно простым API. А теперь. . .
Unit-тестирование с моками в Go
golander 31.05.2025
Большинство разработчиков предпочитают тестировать код без использования моков. Например, при интеграции с Elasticsearch логичнее запустить контейнер локально и тестировать Go-код непосредственно с. . .
Как работать с PDF в C#
stackOverflow 31.05.2025
Нам приходится сталкиваться с PDF по разным причинам. Генерация счетов, создание отчетов, извлечение данных из загруженных пользователем документов, автоматизация рабочих процесов - это лишь верхушка. . .
Двухбуквенные коды стран в шифровании.
russiannick 31.05.2025
Человечество издревле манила возможность замены сочетаний букв вымышленными символами, делающие сообщение понятным только для посвещенных. Настала пора внести в это свой вклад. Двухбуквенные коды. . .
Мой опыт в исправлении ошибки приложения Boinc в части заряда батареи смартфона.
Programma_Boinc 31.05.2025
Мой опыт в исправлении ошибки приложения Boinc в части заряда батареи смартфона. Хотел бы поделиться опытом в исправлении ошибки приложения в части заряда батареи смартфона. Сразу скажу, что. . .
Добро пожаловать на конкурс PrimeGrid, посвященный 20-летию PrimeGrid
Programma_Boinc 31.05.2025
Добро пожаловать на конкурс PrimeGrid, посвященный 20-летию PrimeGrid: 5-дневный обобщенный поиск простых чисел Ферма n = 20 с 12 июня 20:20 UTC по 17 июня 20:20 UTC. 12 июня 2005 года. . .
Вероятность в шансы / Шансы в вероятность
VistaSV30 31.05.2025
# Шансы -> Вероятность def Chance_to_Probability(ch): def gcd(a, b): # НОД - нужен для упрощения значений шансов while b != 0: a, b = b, a % b return a. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »