Ask question

Ask Questions and Get Answers from Our Community

Answer

Answer Questions and Become an Expert on Your Topic

Contact Staff

Our Experts are Ready to Answer your Questions

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

  • Автор темы Rusik123
  • Дата начала
  • Ответы 1
  • Просмотры 1 тыс.
  • Watchers 0

Информация о теме

О теме Здравствуйте, вы читаете тему Работа с сжатыми файлами созданную в в разделе Delphi, Pascal пользователем Rusik123. Эта тема была просмотрена 1 129 раз(а), получила 1 комментариев и 0 очки реакции...
Название категории Delphi, Pascal
Название темы Работа с сжатыми файлами
Автор темы Rusik123
Дата начала
Ответы
Просмотры
Количество реакций
Последнее сообщение xStyle

Rusik123

Пользователь
Регистрация
27.02.2016
Сообщения
189
Реакции
18
Баллы
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
С какого перепуга стали эти типы файлов архивными ? :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.

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