📄 cdecorator.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 + -