unit1.pas

来自「Search files and folders in delphi」· PAS 代码 · 共 124 行

PAS
124
字号
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SsFindFile,Filectrl, Buttons, ComCtrls;

type
  TForm1 = class(TForm)
    FindFile1: TFindFile;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Memo2: TMemo;
    Label3: TLabel;
    Memo3: TMemo;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Edit3: TEdit;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
    procedure FindFile1FileFound(Sender: TObject; LongFileName,
      ShortFileName, Path: String; FileAttributes: TFileType; CreationTime,
      LastWriteTime, LastAccessTime: TDateTime; FileSize: Cardinal);
    procedure Button2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Searched : Integer = 1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Searched := 1;
  memo1.Clear;
  FindFile1.RootDirectory := Edit2.Text;
  FindFile1.FileMask := Edit1.Text;
  FindFile1.FindFiles;
end;

procedure TForm1.FindFile1FileFound(Sender: TObject; LongFileName,
  ShortFileName, Path: String; FileAttributes: TFileType; CreationTime,
  LastWriteTime, LastAccessTime: TDateTime; FileSize: Cardinal);
begin
  if Searched = 1 then
  begin
    Memo1.Lines.Add(Path+LongFileName);
    Label2.Caption := inttostr(Memo1.lines.Count)+' File Found';
  end
    else
  begin
    Memo2.Lines.Add(Path+LongFileName);
    Label3.Caption := inttostr(Memo2.lines.Count)+' File Found';
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Searched := 2;
  memo2.Clear;
  FindFile1.RootDirectory := Edit2.Text;
  FindFile1.FileMask := Edit1.Text;
  FindFile1.FindFiles;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  I : Integer;
begin
  memo3.Clear;
  for i := 0 to Memo1.Lines.Count - 1 do
  begin
    if Pos(Memo1.Lines.Strings[i],Memo2.Text) = 0 then
       Memo3.lines.Add(Memo1.lines.Strings[i]);
     ProgressBar1.Position := (I * 100) div Memo1.Lines.Count ;
     Label1.Caption := inttostr(i);
     Application.ProcessMessages;
  end;
  for i := 0 to Memo2.Lines.Count - 1 do
  begin
    if Pos(Memo2.Lines.Strings[i],Memo1.Text) = 0 then
       Memo3.lines.Add(Memo2.lines.Strings[i]);
     ProgressBar1.Position := (I * 100) div Memo1.Lines.Count ;
    Label1.Caption := inttostr(i);
    Application.ProcessMessages;
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
  i : Integer;
begin
  ProgressBar1.Position := 0;
  Application.ProcessMessages;
  ForceDirectories(Edit3.Text);
  for i := 0 to Memo3.Lines.Count - 1 do
  begin
    ForceDirectories(ExtractfileDir(Edit3.Text+ Copy( Memo3.Lines.Strings[i] , 4,Length(Memo3.Lines.Strings[i]))));
    CopyFile(PChar(Memo3.Lines.Strings[i]),PChar(
     Edit3.Text+ Copy( Memo3.Lines.Strings[i] , 4,Length(Memo3.Lines.Strings[i]))
     ),True);
     ProgressBar1.Position := (i * 100 ) div Memo3.Lines.Count ;
     Application.ProcessMessages;
  end;
end;

end.

⌨️ 快捷键说明

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