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

📄 unit1.pas

📁 ziptv为delphi控件
💻 PAS
字号:
Unit Unit1;

Interface

{$I compiler.inc}
{$IFDEF DEL6_OR_HIGHER}
{$WARN UNIT_PLATFORM OFF}
{$ENDIF}

Uses
   Windows,
   Messages,
   SysUtils,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   StdCtrls,
   FileCtrl,
   ComCtrls,
   Err_Msgs,
   ExtCtrls,
   ztvBase,
   ztvZipSearch,
   ztvTurboSearch,
   Buttons,
   ztvRegister;

Type
   TForm1 = Class(TForm)
      TurboSearch1: TTurboSearch;
      OpenDialog1: TOpenDialog;
      TreeView1: TTreeView;
      ComboBox1: TComboBox;
      GroupBox1: TGroupBox;
      GroupBox2: TGroupBox;
      Panel1: TPanel;
      Panel2: TPanel;
      Panel4: TPanel;
      Panel5: TPanel;
      Panel6: TPanel;
      Label1: TLabel;
      Label2: TLabel;
      Label3: TLabel;
      Label4: TLabel;
      Label5: TLabel;
      Edit1: TEdit;
      Edit2: TEdit;
      Edit3: TEdit;
      Edit4: TEdit;
      Edit5: TEdit;
      Button1: TButton;
      Button2: TButton;
      ckbArchive: TCheckBox;
      ckbHidden: TCheckBox;
      ckbReadOnly: TCheckBox;
      ckbSysFile: TCheckBox;
      ckbZeroAttr: TCheckBox;
      BitBtn1: TBitBtn;
      BitBtn2: TBitBtn;
      CheckBox1: TCheckBox;
      CheckBox2: TCheckBox;
      CheckBox3: TCheckBox;
      CheckBox4: TCheckBox;
      StatusBar1: TStatusBar;
      StatusBar2: TStatusBar;
    	ProgressBar1: TProgressBar;
      Procedure ApplicationBusy;
      Procedure ApplicationWaiting;
      Procedure BitBtn1Click(Sender: TObject);
      Procedure BitBtn2Click(Sender: TObject);
      Procedure Button1Click(Sender: TObject);
      Procedure Button2Click(Sender: TObject);
      Procedure FormActivate(Sender: TObject);
      Procedure Panel5Click(Sender: TObject);
      Procedure Panel5MouseMove(Sender: TObject; Shift: TShiftState; x, y: Integer);
      Procedure SetFileAttributes(Sender: TObject);
      Procedure TurboSearch1Activate(Sender: TObject);
      Procedure TurboSearch1Deactivate(Sender: TObject);
      Procedure TurboSearch1ElapsedTime(Sender: TObject; ElapsedTime: Single);
      Procedure TurboSearch1Error(Sender: TObject; FileName, ExtendedMsg,
      	VolumeID: String; ECode: Integer);
      Procedure TurboSearch1Finish(Sender: TObject; files, Matches, Bytes: Integer);
      Procedure TurboSearch1GetPassword(Sender: TObject; FileName: String; Var Password:
         String; Var TryAgain: Boolean);
      Procedure TurboSearch1MatchInFile(Sender: TObject; SearchFile: String);
      Procedure TurboSearch1Match(Sender: TObject; FileName: String; Offset: Integer);
      Procedure TurboSearch1NextVolume(Sender: TObject; Var VolumeName: String;
      	VolumeID: Integer; FExists: Boolean; Var Cancel: Boolean);
    	Procedure TurboSearch1Progress(Sender: TObject; ByFile, ByArchive: Byte);
      Procedure TurboSearch1SearchBegin(Sender: TObject; FileName: String;
         Count: Integer; Var SearchThisFile: Boolean);
    	Procedure TurboSearch1SearchEnd(Sender: TObject; matches: Integer);
      //Procedure TurboSearch1NestedTarFile(Sender: TObject; FileName: String;
      //	Var doUnTar: Boolean);
   Private
   Public
   End;


Var
   Form1: TForm1;

   
Implementation

{$R *.DFM}

Uses
	ztvConsts,
   Unit2,
   Unit3;

Var
   TotalTime: Real;                     (* search time (seconds) *)
   RootNode: TTreeNode;


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

(* Form - OnActivate event *)

Procedure TForm1.FormActivate(Sender: TObject);
Begin
   (* Assign visual form objects from TurboSearch1's properties *)
	{$ifdef debug_proj}
   //Edit1.Text := 'd:\3\arj\v250\encrypt.arj';
   Edit1.Text := 'd:\3\zip\bug\damaged.zip';
   Edit2.Text := 'procedure';
   Edit3.Text := '*.*';
	{$else}
   Edit1.Text := TurboSearch1.ArchiveFile;
   Edit2.Text := TurboSearch1.SearchText;
   If TurboSearch1.FileSpec.Count > 0 Then
      Edit3.Text := TurboSearch1.FileSpec[0];
	{$endif debug_proj}


   Edit4.Text := IntToStr(TurboSearch1.OffsetBegin);
   Edit5.Text := IntToStr(TurboSearch1.OffsetEnd);

   ComboBox1.ItemIndex := Ord(TurboSearch1.SearchMode);

   CheckBox1.Checked := (stDecompress In TurboSearch1.SearchType);
   CheckBox2.Checked := (stNonArchive In TurboSearch1.SearchType);
	{$ifdef debug_proj}
   CheckBox3.Checked := True;
	{$else}
   CheckBox3.Checked := TurboSearch1.RecurseDirs;
	{$endif debug_proj}
   CheckBox4.Checked := TurboSearch1.CaseSensitive;

   ckbArchive.Checked := (fsArchive In TurboSearch1.Attributes);
   ckbReadOnly.Checked := (fsReadOnly In TurboSearch1.Attributes);
   ckbHidden.Checked := (fsHidden In TurboSearch1.Attributes);
   ckbSysFile.Checked := (fsSysFile In TurboSearch1.Attributes);
   ckbZeroAttr.Checked := (fsZeroAttr In TurboSearch1.Attributes);
End;
//-------------------------------------------------------------

(* "Search these files" button *)

Procedure TForm1.Button1Click(Sender: TObject);
Begin

   TreeView1.Items.Clear;
   Form3.Dump.Lines.Clear();
   TotalTime := 0.0;
   ApplicationBusy();

   Try

      (******** Set properties from forms visual controls *********)

                                 (* Search all files in the directory.
                                    This will include RawData searches
                                    for normal files and decompression
                                    searches for supported archives.
                                    Unsupported archives are searched
                                    as RawData *)

      If Edit3.Text <> '' Then
      Begin
         TurboSearch1.FileSpec.Clear();
         TurboSearch1.FileSpec.Add(Edit3.Text);
      End
      Else
         Exit;

      (************ *************** *************** *************)
      TurboSearch1.ArchiveFile := Edit1.Text;
      TurboSearch1.SetSearchType(stDecompress, CheckBox1.Checked);
      TurboSearch1.SetSearchType(stNonArchive, CheckBox2.Checked);
      TurboSearch1.RecurseDirs := CheckBox3.Checked;
      TurboSearch1.CaseSensitive := CheckBox4.Checked;
      TurboSearch1.Cancel := False;

      // Mode: smAsc, smBin, smDec, smHex, smOct
      TurboSearch1.SearchMode := TztvSearchMode(ComboBox1.ItemIndex);

      // string to search
      TurboSearch1.SearchText := Edit2.Text;

      // Set beginning/ending search offsets
      TurboSearch1.OffsetBegin := StrToInt(Edit4.Text);
      TurboSearch1.OffsetEnd := StrToInt(Edit5.Text);
      TurboSearch1.Search;              // Activate the search

   Finally
      ApplicationWaiting();
      If Form3.Dump.Lines.Count > 0 Then
         Form3.ShowModal();
End;
End;
//-------------------------------------------------------------

Procedure TForm1.ApplicationBusy;
Begin
   Panel1.Cursor := crHourGlass;
End;
//-------------------------------------------------------------

Procedure TForm1.ApplicationWaiting;
Begin
   Panel1.Cursor := crDefault;
End;
//-------------------------------------------------------------

(* The cbkArchive, cbkSysFile, cbkHidden, cbkReadOnly, cbkZeroAttr checkboxes  *)
(* OnClick events reference this procedure                                     *)

Procedure TForm1.SetFileAttributes(Sender: TObject);
Begin
   TurboSearch1.SetAttribute(fsZeroAttr, ckbZeroAttr.Checked);
   TurboSearch1.SetAttribute(fsArchive, ckbArchive.Checked);
   TurboSearch1.SetAttribute(fsReadOnly, ckbReadOnly.Checked);
   TurboSearch1.SetAttribute(fsHidden, ckbHidden.Checked);
   TurboSearch1.SetAttribute(fsSysFile, ckbSysFile.Checked);
End;
//-------------------------------------------------------------

Procedure TForm1.Button2Click(Sender: TObject);
Begin
   StatusBar1.SimpleText := 'Aborting...';
   Close;
End;
//-------------------------------------------------------------

Procedure TForm1.TurboSearch1Activate(Sender: TObject);
Begin
   StatusBar1.SimpleText := '';
   StatusBar2.SimpleText := '';
   Panel4.Visible := True;
End;
//-------------------------------------------------------------

Procedure TForm1.TurboSearch1Deactivate(Sender: TObject);
Begin
   Panel4.Visible := False;
End;
//-------------------------------------------------------------

(* OnSearchBegin event *)

Procedure TForm1.TurboSearch1SearchBegin(Sender: TObject; FileName: String;
   Count: Integer; Var SearchThisFile: Boolean);
Begin
   If Not TurboSearch1.IsArcValid(TurboSearch1.ArcType) Then
      StatusBar1.SimpleText := '';

   //StatusBar2.SimpleText := MinimizeName(FileName, StatusBar2.Canvas, StatusBar2.Width);
   StatusBar2.SimpleText := FileName;
End;
//-------------------------------------------------------------

Procedure TForm1.TurboSearch1SearchEnd(Sender: TObject; matches: Integer);
Begin
   StatusBar2.SimpleText := '';
End;
//-------------------------------------------------------------

(* TurboSearch1 - OnError event

	For a continous operation, write this information out to a file
   instead of the current dialog display.

   To use the dialog display, unrem the following code. *)

Procedure TForm1.TurboSearch1Error(Sender: TObject; FileName, ExtendedMsg,
   VolumeID: String; ECode: Integer);
Begin
   Form3.Dump.Lines.Add('*' + VolumeID);
   Form3.Dump.Lines.Add(#9 + 'File: ' + FileName);
   Form3.Dump.Lines.Add(#9 + 'Msg: ' + ExtendedMsg);
   Form3.Dump.Lines.Add(#9 + 'Error# ' + IntToStr(ECode));
   Form3.Dump.Lines.Add(#9 + LoadStr(ECode));
End;
//-------------------------------------------------------------

(* OnElapsedTime event - collect total time *)

Procedure TForm1.TurboSearch1ElapsedTime(Sender: TObject; ElapsedTime: Single);
Begin
   TotalTime := ElapsedTime;
End;
//-------------------------------------------------------------
(* OnFinish event - activated when finished searching each file.
   Collect total information *)

Procedure TForm1.TurboSearch1Finish(Sender: TObject; files, Matches, Bytes: Integer);
Begin
   MessageDlg('Matches = ' + IntToStr(Matches) +
      #13'Files Searched = ' + IntToStr(files) +
      #13'Bytes Searched = ' + IntToStr(Bytes) +
      #13#13 + Format('Seconds: %g', [TotalTime]),
      mtInformation,
      [mbOK],
      0);
End;
//-------------------------------------------------------------

(* OnGetPassword event - enter the password for password
   encrypted archives *)

Procedure TForm1.TurboSearch1GetPassword(Sender: TObject; FileName: String;
   Var Password: String; Var TryAgain: Boolean);
Var
	AF: String;
Begin
   AF := MinimizeName(TTurboSearch(Sender).fVolumeName, Canvas, 200);
   //StatusBar2.SimpleText := MinimizeName(FileName, StatusBar2.Canvas, StatusBar2.Width);

   (* InputQuery is a Delphi function *)
   If Not InputQuery(AF, 'Enter password', Password) Then
      TryAgain := False;
End;
//-------------------------------------------------------------
(* OnNextVolume event *)

Procedure TForm1.TurboSearch1NextVolume(Sender: TObject; Var VolumeName: String;
   VolumeID: Integer; FExists: Boolean; Var Cancel: Boolean);
Begin
   // We're not processing multi-volume archives.  To do so,
   // see the OnNextVolume event in demos\MainDemo\MainDemo.dpr
   Cancel := True;
End;
//-------------------------------------------------------------

(* OnFoundMatchInFile event
   Activated once for each archive/disk-file a match was found in.
   In this demo, we start a TreeView node with each new FileName. *)

Procedure TForm1.TurboSearch1MatchInFile(Sender: TObject; SearchFile: String);
Begin
   StatusBar1.SimpleText := SearchFile;
   //StatusBar1.SimpleText := MinimizeName(SearchFile, StatusBar1.Canvas,
   //   StatusBar1.Width);
   RootNode := TreeView1.Items.Add(TreeView1.TopItem, SearchFile);
End;
//-------------------------------------------------------------

(* OnMatch event
   Activated once for each archive/disk-file a match was found in.
   In this demo, we don't use the Offset parameter.  The offset
   parameter returns the position in which the match was found. *)

Procedure TForm1.TurboSearch1Match(Sender: TObject; FileName: String; Offset: Integer);
Begin
   TreeView1.Items.AddChild(RootNode, FileName);
End;
//-------------------------------------------------------------

(* Cancel button *)

Procedure TForm1.Panel5Click(Sender: TObject);
Begin
   TurboSearch1.Cancel := True;
   StatusBar1.SimpleText := 'Aborting...';
   StatusBar1.Update();
End;
//-------------------------------------------------------------

(* Exclude Exts button *)

Procedure TForm1.BitBtn2Click(Sender: TObject);
Begin
   Form2.Show;
End;
//-------------------------------------------------------------

Procedure TForm1.Panel5MouseMove(Sender: TObject; Shift: TShiftState; x, y: Integer);
Begin
   Panel5.Cursor := crArrow;
End;
//-------------------------------------------------------------

(* File selection button *)

Procedure TForm1.BitBtn1Click(Sender: TObject);
Begin
   OpenDialog1.Options := [ofHideReadOnly, ofFileMustExist, ofPathMustExist];
   OpenDialog1.InitialDir := ExtractFilePath(Edit1.Text);

   If OpenDialog1.Execute Then
      Edit1.Text := OpenDialog1.FileName;
End;
//-------------------------------------------------------------

//Procedure TForm1.TurboSearch1NestedTarFile(Sender: TObject;
//  FileName: String; Var doUnTar: Boolean);
//Begin
// doUnTar := True;
//End;
//-------------------------------------------------------------

Procedure TForm1.TurboSearch1Progress(Sender: TObject; ByFile,
  ByArchive: Byte);
Begin
   ProgressBar1.Position := ByArchive;
   ProgressBar1.Update();
End;
//-------------------------------------------------------------


End.

⌨️ 快捷键说明

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