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

📄 unit1.pas

📁 DELPHI的压缩控件,非常实用的第三方控件
💻 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 + -