07.12.2020, 00:48
|
Прохожий
|
|
Регистрация: 05.12.2020
Сообщения: 4
Версия Delphi: Delphi 10
Репутация: 10
|
|
Как сделать программный поиск файлов?
я изменил код из статьи: https://delphisources.ru/pages/faq/b...es_search.html
Программа должна искать .exe файлы на диске C, но после нажатия кнопки ничего не происходит
где я накосячил?
Код:
unit Unit3;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.StdCtrls, Vcl.CheckLst;
type
TForm3 = class(TForm)
MainMenu1: TMainMenu;
N2: TMenuItem;
yf1: TMenuItem;
Button1: TButton;
CheckListBox1: TCheckListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure FindFile(Dir: string);
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
CheckListBox1.Clear; // очистка списка файлов
findfile('c:\')// поиск файлов с начальными условиями, заданных в Edit1
end;
procedure TForm3.FindFile(Dir: string);
var
SR: TSearchRec;
FindRes: Integer;
begin
FindRes := FindFirst(Dir + '*.exe', faAnyFile, SR);
while FindRes = 0 do
begin
if ((SR.Attr and faDirectory) = faDirectory) and
((SR.Name = '.') or (SR.Name = '..')) then
begin
FindRes := FindNext(SR);
Continue;
end;
// если найден каталог, то
if ((SR.Attr and faDirectory) = faDirectory) then
begin
// входим в процедуру поиска с параметрами текущего каталога +
// каталог, что мы нашли
FindFile(Dir + SR.Name + '\');
FindRes := FindNext(SR);
// после осмотра вложенного каталога мы продолжаем поиск
// в этом каталоге
Continue; // продолжить цикл
end;
CheckListBox1.Items.Add(SR.Name);
FindRes := FindNext(SR);
end;
FindClose(SR);
end;
end.
|