Показать сообщение отдельно
  #5  
Старый 15.01.2014, 07:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Как тут уже писали - все гениальное просто.
Просто запакуй файлы с помощью zlib.
Начиная с Delphi 6, в поставке есть готовые потоки с поддержкой сжатия. Т.е. тебе нужна будет спец утилитка для подготовки файлов (сжатия их). а читать надо через соотв. поток.
Я делаю вот так:
Код:
procedure TModelBase.BackupToFile(AFileName: String);
var
  AStream : TFileStream;
  AZLib : TCompressionStream;
begin
  AStream := TFileStream.Create(AFileName,fmCreate);
  AZLib := TCompressionStream.Create(clMax,AStream);
  Try
    SaveToStream(AZLib);
  Finally
    AZLib.Free;
    AStream.Free;
  End;
end;

procedure TModelBase.RestoreFromFile(AFileName: String);
var
  AZLib : TDecompressionStream;
  AStream : TFileStream;
begin
  AStream := TFileStream.Create(AFileName,fmOpenRead);
  AZLib := TDecompressionStream.Create(AStream);
  Try
    LoadFromStream(AZLib);
  Finally
    AZLib.Free;
    AStream.Free;
  End;
end;

Методы LoadFromStream и SaveToStream внутри работают с обычным потоком (TStream).
Ответить с цитированием