Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.07.2016, 12:07
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию Свой архив RAD Studio Delphi 10.1

Здраствуйте. Скажите как сделать свой архив для содержания:
1. Информацию в виде типа record
Код:
Type TInfo=record
  //Имя автора
  NameAutor:String[30];
  //Информация отображаемая в Memo
  Info:TStringList;
  Pasword:WideString;
  Logo:TPNGImage;
end;
2. Любой файл
Процесс архивации нужно показывать в ProgressBar
Полученный архив должно быть нельзя открыть в любой программе кроме как моей.
Например в 7zip или джругом архиваторе
Или в редакторе ресурсов
Информацию тоже должно быть нельзя прочесть
Может есть готовый компонент или библиотека?
Ответить с цитированием
  #2  
Старый 08.07.2016, 14:05
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

1. Содержимое TStringList, WideString и TPNGImage сохранять в файл с преамбулой длины данных
2. Использовать готовый набор Cryptography Functions
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 08.07.2016, 15:12
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
1. Содержимое TStringList, WideString и TPNGImage сохранять в файл с преамбулой длины данных
2. Использовать готовый набор Cryptography Functions
Тут не просто криптография а архивация нужнай. Свой собственный архив
Гдебы хранились файлы и информация тип record код которого я дал.
Ответить с цитированием
  #4  
Старый 09.07.2016, 04:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, например, можно сделать финт ушами. Писать свой "честный" архиватор - как-то долго и сложно. Поэтому собственно для компрессии используем ZLib (TCompressStream, если правильно помню имя). Далее есть варианты. Можно отдельно компрессировать каждую запись. Тогда структура файла должна быть примерно такой:
Код:
MYZIP - 5 char file signature
NumberOfElements - 4 byte integer
Element 1 length - 4 byte integer
Element 1 data - raw data
...
Element n length - 4 byte integer
Element n data - raw data
Каждый элемент с помощью компрессирующего потока пишется в TMemoryStrteam, выясняется его длинна, потом длинна и данные пишутся в файл.
Чтение - в обратном порядке. Считали длинну, скопировали полученное кол-во байт в декомпрессирующий поток, дальше вычитали результат в переменную.
Ответить с цитированием
  #5  
Старый 09.07.2016, 14:47
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ну, например, можно сделать финт ушами. Писать свой "честный" архиватор - как-то долго и сложно. Поэтому собственно для компрессии используем ZLib (TCompressStream, если правильно помню имя). Далее есть варианты. Можно отдельно компрессировать каждую запись. Тогда структура файла должна быть примерно такой:
Код:
MYZIP - 5 char file signature
NumberOfElements - 4 byte integer
Element 1 length - 4 byte integer
Element 1 data - raw data
...
Element n length - 4 byte integer
Element n data - raw data
Каждый элемент с помощью компрессирующего потока пишется в TMemoryStrteam, выясняется его длинна, потом длинна и данные пишутся в файл.
Чтение - в обратном порядке. Считали длинну, скопировали полученное кол-во байт в декомпрессирующий поток, дальше вычитали результат в переменную.
А может кто код дать?
Как я сказал архив нельзя должно быть открыть в другой программе и процесс архивации должен открываться в другой программе
Плюс также в архив должна записываться информация которая будет показываться при открытии архива.
Ответить с цитированием
  #6  
Старый 09.07.2016, 18:21
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

Я кажется придумал схема своего архива с информацией
Для начала происходит архивация в zip
Потом полученный zip открываем в потоке
Добавляем туда информацию
Шифруем каждый символ (по сути архив можно открыть как текстовой файл но вместо текста там бинарный код который тоже состоит из символов а значит применить к каждому символу шифровку в виде xor и своего ключа
Можете сказать как мне реализовать такое с показом на progressBar и какие компоненты нужно скачать?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025