Форум по 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,015
Версия 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 и какие компоненты нужно скачать?
Ответить с цитированием
  #7  
Старый 25.09.2016, 09:30
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

И так. У меня появилось время. Да и приоритет я поменял.
Не нужно мне шифрование.
Идея следующая:
Использовать запороленный 7zip с вшитой в него нужной информацией.
При открытии (выборе файла) информация считывается и удаляется.
Ну и дальше распаковка с показом на ProgressBar
Может кто пример кинет как это сделать. Вроде бы в инете был модуль SevenZip для этого.
Подскажите как сделать запоковку с поролем и вшитой информацией в 7Zipn и распоковку. И если возможно то вшить инфолрмацию так чтобы это не рушила структуру архива если нет то вшить ее в конце после архивации.
Может кто пример сделать.
Вот сам модуль с оф сайта
http://www.rg-software.de/

Последний раз редактировалось Alexandr_57, 25.09.2016 в 09:36.
Ответить с цитированием
  #8  
Старый 25.09.2016, 18:41
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Похоже здесь в корне не верный подход к решению.
Нужен стандартизированный файл-контейнер содержащий различные данные, среди которых и запакованный архив, где он не главный, а как только составляющая.
Задача поставлена неявно, можно лишь предположить, что выглядеть на выходе она должна примерно так: будет туева хуча однотипных файлов, при выборе и загрузке в ридер этого формата пользователю показывается текстовая информация об авторе и доп.инфа по содержимому с эскизом. При вводе юзером пароля, происходит распаковка хранимого в этом файле архива, а сам носитель уничтожается
Ответить с цитированием
  #9  
Старый 25.09.2016, 19:25
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

Кокрастаки пороль вводить не должен.
Во вторых так как данные это название архива и автор то вроде как 7Zip уже имеет такую поддержку. Ну впрочем вводить нужно только автора и название архива. После чего упаковываешь файлы с поролем.
Мне просто нужен пример упаковки и распоковки архива 7zip с поролем но еще и с вшитой информацией. В библиотеке что я дал есть демка но както я не разобралдся с ней или не понятно демка на упаковку ии распоковку.
Но мне еще нужно показ вшитой информации
Ответить с цитированием
  #10  
Старый 25.09.2016, 19:33
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Ну понятие - понятно, у всех разное, сейчас нету времени детально копаться во всяком, вот вам пока старинный пример добавки и показ текста к архиву, если вы его выберете в качестве реципиента, посмотрите пжлст
Вложения
Тип файла: zip tif.zip (6.6 Кбайт, 3 просмотров)
Ответить с цитированием
  #11  
Старый 25.09.2016, 19:40
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

Чет не понял. Он записать записывает но при повторном открытии не показывает чета.
Ответить с цитированием
  #12  
Старый 25.09.2016, 20:13
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А сохранять не пробовали? А вот пример файл-контейнера нашёлся, текст и бинарник в меморном потоке
Вложения
Тип файла: zip wert.zip (112.4 Кбайт, 3 просмотров)
Ответить с цитированием
  #13  
Старый 25.09.2016, 20:17
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
А сохранять не пробовали? А вот пример файл-контейнера нашёлся, текст и бинарник в меморном потоке
Я и так сохраняю. Я ж говорю записывает но при повторном открытии текст не найден.
На счет примера то там пример с картинками jpga

Последний раз редактировалось Alexandr_57, 25.09.2016 в 20:25.
Ответить с цитированием
  #14  
Старый 25.09.2016, 20:31
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Alexandr_57
...записывает но при повторном открытии текст не найден...
Не трудно ли вам выложить архив *.zip с добавленным вами коментом, чтоб текст посмотреть, аж интересно, лет десять это всё успешно работает, а тут - нет

З.Ы. Вместо картинки любой файл подставить можно, это ж пример

Последний раз редактировалось Alegun, 25.09.2016 в 20:40.
Ответить с цитированием
  #15  
Старый 25.09.2016, 20:35
Alexandr_57 Alexandr_57 вне форума
Прохожий
 
Регистрация: 26.02.2016
Сообщения: 30
Версия Delphi: Delphi XE10
Репутация: 10
По умолчанию

С каким компонентом?
Так мне сам пример еще запаковки и распаковки файлов 7zip нужно
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter