• Инструменты для разработчика

    • Самые удобные инстременты для разработчика, которые облегчат жизнь любого как начинающего так и продвинутого разработчика. Украшатели, уменьшители, конвертеры кодов. Доменные инструменты. Всё в одном комплекте.
  • Использование BB кодов. Тут указаны существующие BB коды на форуме.

Delphi Работа с сжатыми файлами

  • Автор темы Rusik123
  • Дата создания
  • Ответов 1
  • Просмотров 1 тыс.

Rusik123

Пользователь
Регистрация
27.02.2016
Сообщения
189
Репутация
18
Баллы
0
Награды
0
Лучшие ответы
0
м уроке мы рассмотрим библиотеку "7z.dll", с её помощью можно распаковывать архивы такого типа:
Zip, BZ2, Rar, Arj, Z, Lzh, 7z, Cab, Nsis, Lzma, Pe, Elf, Macho, Udf, Xar, Mub, Hfs, Dmg, Compound, Wim, Iso, Bkf, Chm, Split, Rpm, Deb, Cpio, Tar, GZip

Практически все существующие архивы. Попытаемся распаковать архив типа Zip. Для этого создадим проект и сам архив, назовем его 1.zip и положим рядом с программой.
На форму вытащим кнопочку и напишем в событии OnClick вот такой код:
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
После, рядом с программой появится папка "1", с содержимым архива. И не забудьте подключить в Uses модуль SevenZip, его вы найдете в конце данного урока.
Также можно создать архив:
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Задать уровень сжатия можно функцией SetCompressionLevel(Arch: I7zOutArchive, Level: Integer);. Как видите все просто.
Для работы с другими архивами надо изменить константу CLSID_CFormatZip . Например для .Rar архива, константа будет иметь вид CLSID_CFormatRar, полный список можно увидеть кликнув по константе с зажатым Ctrl.

Удачи!
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Rusik активный пользователь!
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Запомни эту фразу,все будет,но не сразу
 

xStyle

Пользователь
Регистрация
28.03.2016
Сообщения
14
Репутация
1
Баллы
0
Награды
0
Лучшие ответы
0
С какого перепуга стали эти типы файлов архивными ? :mocking: Ссылка на wiki
Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!


АВТОР В СЛЕДУЮЩИЙ РАЗ НЕ НЕСИ ЧУЖЖЖЖЖ!!!! модераторы вы куда смотрите ? :icon_help:

Карочи для тех кто в ТАНКЕ объясню что и как с этими файлами :wink:

И я раскажу тока о 32 битной архитектуре 64 нам не к чему думаю если бедет интересно то могу объяснить :wink:

Файл формата ELF состоит из следующих частей:

1. Заголовок ELF файла
2. Таблица программных секций
3. Секции ELF файла
4. Таблица секций
5. Ради производительности в формате ELF не используются битовые поля. И все структуры обычно выравниваются на 4 байта.


ЗАГОЛОВОК ФАЙЛА

Код:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Массив e_ident содержит в себе информацию о системе и состоит из нескольких под полей.

Код:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!



Загрузка формата ELF.

Код:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!


Формат PE.

Во многом он аналогичен формату ELF, ну и не удивительно, там так же должны быть секции, доступные для загрузки.
Как и все в Microsoft :) формат PE базируется на формате EXE. Структура файла такова:

1. 00h - EXE заголовок
2. 20h - OEM заголовок
3. 3сh - смещение реального PE заголовка в файле (dword).
4. Таблица перемещения stub
5. stub
6. PE заголовок
7. Таблица объектов
8. Объекты файла

Структура его такая:

Код:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!


Вот на флагах стоит остановиться поподробнее.

00000004h - используется для кода с 16 битными смещениями
00000020h - секция кода
00000040h - секция инициализированных данных
00000080h - секция неинициализированных данных
00000200h - комментарии или любой другой тип информации
00000400h - оверлейная секция
00000800h - не будет являться частью образа программы
00001000h - общие данные
00500000h - выравнивание по умолчанию, если не указано иное
02000000h - может быть выгружен из памяти
04000000h - не кэшируется
08000000h - не подвергается страничному преобразованию
10000000h - разделяемый
20000000h - выполнимый
40000000h - можно читать
80000000h - можно писать



Загрузка формата PE.

Код:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
 
Сверху Снизу