Показать сообщение отдельно
  #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, выясняется его длинна, потом длинна и данные пишутся в файл.
Чтение - в обратном порядке. Считали длинну, скопировали полученное кол-во байт в декомпрессирующий поток, дальше вычитали результат в переменную.
А может кто код дать?
Как я сказал архив нельзя должно быть открыть в другой программе и процесс архивации должен открываться в другой программе
Плюс также в архив должна записываться информация которая будет показываться при открытии архива.
Ответить с цитированием