Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  1 690

•  TDictionary Custom Sort  4 277

•  Fast Watermark Sources  3 945

•  3D Designer  6 110

•  Sik Screen Capture  4 209

•  Patch Maker  4 756

•  Айболит (remote control)  4 670

•  ListBox Drag & Drop  3 810

•  Доска для игры Реверси  90 580

•  Графические эффекты  5 004

•  Рисование по маске  4 035

•  Перетаскивание изображений  3 375

•  Canvas Drawing  3 690

•  Рисование Луны  3 480

•  Поворот изображения  3 010

•  Рисование стержней  2 632

•  Paint on Shape  2 025

•  Генератор кроссвордов  2 792

•  Головоломка Paletto  2 214

•  Теорема Монжа об окружностях  2 913

•  Пазл Numbrix  1 973

•  Заборы и коммивояжеры  2 571

•  Игра HIP  1 592

•  Игра Go (Го)  1 521

•  Симулятор лифта  1 801

•  Программа укладки плитки  1 546

•  Генератор лабиринта  1 915

•  Проверка числового ввода  1 674

•  HEX View  1 855

•  Физический маятник  1 687

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Поиск файлов по маске в заданной директории



Автор: Xavier Pacheco

{
Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira
}

unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, FileCtrl, Grids, Outline, DirOutln;

type
  TMainForm = class(TForm)
    dcbDrives: TDriveComboBox;
    edtFileMask: TEdit;
    lblFileMask: TLabel;
    btnSearchForFiles: TButton;
    lbFiles: TListBox;
    dolDirectories: TDirectoryOutline;
    procedure btnSearchForFilesClick(Sender: TObject);
    procedure dcbDrivesChange(Sender: TObject);
  private
    FFileName: string;
    function GetDirectoryName(Dir: string): string;
    procedure FindFiles(APath: string);
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

function TMainForm.GetDirectoryName(Dir: string): string;
{ This function formats the directory name so that it is a valid
  directory containing the back-slash (\) as the last character. }
begin
  if Dir[Length(Dir)] <> '\' then
    Result := Dir + '\'
  else
    Result := Dir;
end;

procedure TMainForm.FindFiles(APath: string);
{ This is a procedure which is called recursively so that it finds the
  file with a specified mask through the current directory and its
  sub-directories. }
var
  FSearchRec,
    DSearchRec: TSearchRec;
  FindResult: integer;

  function IsDirNotation(ADirName: string): Boolean;
  begin
    Result := (ADirName = '.') or (ADirName = '..');
  end;

begin
  APath := GetDirectoryName(APath); // Obtain a valid directory name
  { Find the first occurrence of the specified file name }
  FindResult := FindFirst(APath + FFileName, faAnyFile + faHidden +
    faSysFile + faReadOnly, FSearchRec);
  try
    { Continue to search for the files according to the specified
      mask. If found, add the files and their paths to the listbox.}
    while FindResult = 0 do
    begin
      lbFiles.Items.Add(LowerCase(APath + FSearchRec.Name));
      FindResult := FindNext(FSearchRec);
    end;

    { Now search the sub-directories of this current directory. Do this
      by using FindFirst to loop through each subdirectory, then call
      FindFiles (this function) again. This recursive process will
      continue until all sub-directories have been searched. }
    FindResult := FindFirst(APath + '*.*', faDirectory, DSearchRec);

    while FindResult = 0 do
    begin
      if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
        IsDirNotation(DSearchRec.Name) then
        FindFiles(APath + DSearchRec.Name); // Recursion here
      FindResult := FindNext(DSearchRec);
    end;
  finally
    FindClose(FSearchRec);
  end;
end;

procedure TMainForm.btnSearchForFilesClick(Sender: TObject);
{ This method starts the searching process. It first changes the cursor
  to an hourglass since the process may take awhile. It then clears the
  listbox and calls the FindFiles() function which will be called
  recursively to search through sub-directories }
begin
  Screen.Cursor := crHourGlass;
  try
    lbFiles.Items.Clear;
    FFileName := edtFileMask.Text;
    FindFiles(dolDirectories.Directory);
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TMainForm.dcbDrivesChange(Sender: TObject);
begin
  dolDirectories.Drive := dcbDrives.Drive;
end;

end.




Похожие по теме исходники

Поисковик

Поиск символа

Поиск файлов

Поиск открытых файлов

 

Findup (поиск дублей)

Дейкстра: поиск кратчайшего пути

Чтение PSD файлов

Шифратор файлов

 

FileMan (менеджер файлов)

Рисование по маске




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте