⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdecorator.pas

📁 Delphi深度探索,Delphi深度探索(第二版)
💻 PAS
字号:
{-----------------------------------------------------------------------------
 Unit Name: CDecorator
 Author:    hubdog(陈省)
 Email:     hubdog@263.net
 Purpose:   演示装饰模式的用法
 History:
            2003-6-4 创建本单元
-----------------------------------------------------------------------------}


unit CDecorator;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    mmoCompress: TMemo;
    btn1: TButton;
    btn2: TButton;
    btn3: TButton;
    btn4: TButton;
    procedure btn3Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses zlib;
{$R *.dfm}

procedure TForm1.btn3Click(Sender: TObject);
var
  fs:TFileStream;
begin
  //一般的保存的功能,memo内容被保存到common.txt中
  fs:=TFileStream.Create('common.txt',fmCreate);
  try
    mmoCompress.Lines.SaveToStream(fs);
  finally
    fs.Free;
  end;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  fs:TFileStream;
  zlibs:TCompressionStream;
begin
  fs:=TFileStream.Create('zip.txt', fmCreate);
  zlibs:=TCompressionStream.Create(clMax, fs);
  //压缩保存,memo内容被保存到zip.txt中
  try
    mmoCompress.Lines.SaveToStream(zlibs);
  finally
    zlibs.Free;
    fs.Free;
  end;
end;

procedure TForm1.btn2Click(Sender: TObject);
var
  fs:TFileStream;
begin
  //一般加载,加载common.txt的内容
  fs:=TFileStream.Create('common.txt', fmOpenRead);
  try
    mmoCompress.Lines.LoadFromStream(fs);
  finally
    fs.Free;
  end;
end;

procedure TForm1.btn4Click(Sender: TObject);
var
  fs:TFileStream;
  zlibs:TDecompressionStream;
  fWorkStream: TMemoryStream;
  fBufLen: integer;
  fBuffer: array[0..16383] of byte;
begin
  //加载压缩文件,加载zip.txt中的内容
  fs:=TFileStream.Create('zip.txt', fmOpenRead);
  zlibs:=TDecompressionStream.Create(fs);
  fWorkStream := TMemoryStream.create;
  try
    fBufLen := zlibs.Read(fBuffer, SizeOf(fBuffer));
    while fBufLen > 0 do
    begin
      fWorkStream.Write(fBuffer, fBufLen);
      fBufLen := zlibs.Read(fBuffer, SizeOf(fBuffer));
    end;
    fWorkStream.position := 0;
    mmoCompress.Lines.LoadFromStream(fWorkStream);
  finally
    fworkStream.Free;
    zlibs.Free;  
    fs.Free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -