unit1.pas

来自「DELPHI的压缩控件,非常实用的第三方控件」· PAS 代码 · 共 95 行

PAS
95
字号
Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ComCtrls, ExtCtrls, ztvZipTV, ztvregister, ztvbase,
  ztvUnZip, Err_Msgs;

Type
  TForm2 = Class(TForm)
    UnZip1: TUnZip;
    ZipTV1: TZipTV;
    Panel2: TPanel;
    Panel3: TPanel;
    RichEdit1: TRichEdit;
    ListBox1: TListBox;
    Panel1: TPanel;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Panel4: TPanel;
    OpenDialog1: TOpenDialog;
    Procedure BitBtn1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  Private
    { Private declarations }
  Public
    { Public declarations }
  End;

Var
  Form2: TForm2;

Implementation

{$R *.DFM}


//-------------------------------------------------------------

Procedure TForm2.BitBtn1Click(Sender: TObject);
Var
	TSL: TStrings;
Begin
   OpenDialog1.Options := [ofHideReadOnly, ofFileMustExist, ofPathMustExist];
   OpenDialog1.Filter := LoadStr( F_TZIPTV );
   OpenDialog1.FileName := '*.*';
   OpenDialog1.Title := 'Select archive...';
   If OpenDialog1.Execute() Then
   Begin
      ZipTV1.ArchiveFile := OpenDialog1.FileName;
      UnZip1.ArchiveFile := ZipTV1.ArchiveFile;
      If ZipTV1.IsArcValid( ZipTV1.ArcType ) And UnZip1.IsArcValid( UnZip1.ArcType ) Then
      Begin
         Edit1.Text := OpenDialog1.FileName;
         TSL := TStringList.Create();
         Try
            ZipTV1.FileSpec.Clear();
            ZipTV1.FileSpec.Add('*.*');
            ZipTV1.RecurseDirs := True;
            ZipTV1.FilesInArchive(TSL);
            ListBox1.Items.Assign(TSL);
         Finally
            TSL.Free();
         End;
      End Else
         Edit1.Text := 'Invalid archive...';
   End;
End;
//-------------------------------------------------------------

Procedure TForm2.ListBox1Click(Sender: TObject);
Var
   p: PChar;
	FileSize: Int64;
   FileName: String;
Begin
   RichEdit1.Clear();

   FileName := ListBox1.Items[ListBox1.ItemIndex];
   FileSize := ZipTV1.GetFileUnpackedSize(FileName);

   GetMem(p, FileSize + 1);
   Try
      UnZip1.ExtractToPointer(FileName, p);
      RichEdit1.Lines.Add(StrPas(p));
   Finally
      FreeMem(p, FileSize + 1)
   End;
End;
//-------------------------------------------------------------

End.

⌨️ 快捷键说明

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