【发布时间】:2021-12-16 10:35:00
【问题描述】:
我想通过单击 TButton2 在我的计算机中的选定文件夹中搜索添加到 CheckListBox 的关键字。我的意思是该应用程序将搜索所选文件夹中的所有日志文件。我不想选择单个文件在其中搜索,而是选择所有文件夹。请帮帮我
如果有帮助,这是我的全部代码:
unit UPrzeszukiwaczLogów;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.CheckLst, Vcl.ExtCtrls, FileCtrl,
System.Actions;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
Button3: TButton;
Button4: TButton;
CheckListBox1: TCheckListBox;
Button5: TButton;
Button6: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
chosenDirectory : string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit2.Text <> '' then
begin
CheckListBox1.Items.Add(Edit2.Text);
Edit2.Text := '';
Edit2.SetFocus;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
s: string;
begin
if SelectDirectory('Select a directory', s, s, []) then
Edit1.Text:= s
else
if MessageBox(Handle, 'Anulowano wybieranie lokalizacji do przeszukania',
'Przeszukiwacz logów', MB_ICONINFORMATION or MB_OK) = IDOK then
Exit;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i: integer;
begin
for i := CheckListBox1.Count - 1 downto 0 do
if CheckListBox1.Checked[i] then
begin
CheckListBox1.Selected[i] := True;
CheckListBox1.DeleteSelected;
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
CheckListBox1.Clear;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
CheckListBox1.Clear;
Memo1.Clear;
Memo2.Clear;
Edit1.SetFocus;
end;
end.
【问题讨论】:
-
枚举文件并一一打开,搜索字符串。例如,您可以使用
TDirectory.GetFiles。