📄 unit1.pas
字号:
Unit unit1;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
Type
TForm1 = Class(TForm)
Memo3: TMemo;
Memo4: TMemo;
Panel3: TPanel;
Panel4: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
Procedure Button1Click(Sender: TObject);
Procedure Button2Click(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
Form1: TForm1;
Implementation
{$R *.DFM}
Uses
ztvBase, ztvGbls, ztvStreams, ztvInflate, ztvDeflate;
//-------------------------------------------------------------
Procedure StrToBuf( Buf: Pointer; Str: String );
Begin
Move( Str[1], Buf^, Length( Str ) );
End;
//-------------------------------------------------------------
Function BufToStr( Buf: Pointer; Size: Integer ): String;
Begin
SetLength( Result, Size );
Move( Buf^, Result[1], Size );
End;
//-------------------------------------------------------------
Procedure TForm1.Button1Click(Sender: TObject);
Var
Buffer, CompressBuf: Pointer;
BufSize, CompressBufSize: Integer;
Level: TDeflateType;
Begin
BufSize := Length( Memo3.Text ); {Get length of memo3 text}
GetMem( Buffer, BufSize + 1 );
Try
StrToBuf( Buffer, Memo3.Text ); //put Memo3.Text into Buffer}
Level := dtDeflateN; {define the compression level}
ztvCompress_BufToBuf( Buffer, BufSize, CompressBuf, CompressBufSize, Level ); {compress the buffer into CompressBuf}
Try
Memo4.Text := BufToStr( CompressBuf, CompressBufSize );
Finally
{ALWAYS free the CompressBuf (allocated in ztvCompressBuf)}
FreeMem( CompressBuf, CompressBufSize );
End;
Finally
FreeMem( Buffer, BufSize + 1 );
Memo3.Text := ''; {clear memo3}
End;
End;
//-------------------------------------------------------------
Procedure TForm1.Button2Click(Sender: TObject);
Var
Buffer, DecompressBuf: Pointer;
BufSize, DecompressBufSize: Integer;
Begin
If Length( Memo4.Text ) = 0 Then Exit;
BufSize := Length( Memo4.Text ); {Get length of memo4 compressed data}
GetMem( Buffer, BufSize + 1 );
Try
StrToBuf( Buffer, Memo4.Text ); {put Memo4.Text into Buffer}
ztvDecompress_BufToBuf( Buffer, BufSize, DecompressBuf, DecompressBufSize, 0 );
Try
Memo3.Text := BufToStr( DecompressBuf, DecompressBufSize ); {copy contents of compressed data (DecompressBuf) to Memo3}
Finally
{ALWAYS free the DecompressBuf (allocated in ztvDecompressBuf)}
FreeMem( DecompressBuf, DecompressBufSize );
End;
Finally
FreeMem( Buffer, BufSize + 1 );
Memo4.Text := ''; {clear memo4}
End;
End;
//-------------------------------------------------------------
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -