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

Да, вот так работает:
Код:
uses
  ZLib;

procedure TForm1.Button1Click(Sender: TObject);
var
  AStream : TFileStream;
  AZLib : TCompressionStream;
  AMemStream : TMemoryStream;
  ALen : Int64;
begin
  AStream := TFileStream.Create('c:\test.z',fmCreate);
  AMemStream := TMemoryStream.Create;
  AZLib := TCompressionStream.Create(clMax,AStream);
  Try
    Memo1.Lines.SaveToStream(AMemStream);
    AMemStream.Seek(0,0);
    ALen := AMemStream.Size;
    AZLib.WriteBuffer(ALen,SizeOf(Int64));
    AZLib.CopyFrom(AMemStream,ALen);
  Finally
    AZLib.Free;
    AStream.Free;
  End;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  AZLib : TDecompressionStream;
  AStream : TFileStream;
  AMemStream : TMemoryStream;
  ALen : Int64;
begin
  AStream := TFileStream.Create('c:\test.z',fmOpenRead);
  AZLib := TDecompressionStream.Create(AStream);
  AMemStream := TMemoryStream.Create;
  Try
    AZLib.ReadBuffer(ALen,SizeOf(Int64));
    AMemStream.CopyFrom(AZLib,ALen);
    AMemStream.Seek(0,0);
    Memo1.Lines.LoadFromStream(AMemStream);
  Finally
    AMemStream.Free;
    AZLib.Free;
    AStream.Free;
  End;
end;
Ответить с цитированием