home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programming Unleashed / Delphi_Programming_Unleashed_SAMS_Publishing_1995.iso / units / fileiter.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-03-21  |  1.8 KB  |  82 lines

  1. unit Fileiter;
  2.  
  3. { FILEITER.PAS copyright (c) 1994 by Charles Calvert }
  4.  
  5. interface
  6.  
  7. uses
  8.   SysUtils, WinTypes, WinProcs,
  9.   Messages, Classes, Graphics,
  10.   Controls, Forms, AllDirs;
  11.  
  12. type
  13.   TFileIterator = class(TRunDirs)
  14.   private
  15.     FFileList: TStringList;
  16.     FDirList: TStringList;
  17.     FUseFileList: Boolean;
  18.     FUseDirList: Boolean;
  19.     procedure SetFileList(UseList: Boolean);
  20.     procedure SetDirList(UseList: Boolean);
  21.   protected
  22.     procedure ProcessName(FName: String; SR: TSearchRec); override;
  23.     procedure ProcessDir(Start: String); override;
  24.   public
  25.     destructor Destroy; override;
  26.     property FileList: TStringList read FFileList;
  27.     property DirList: TStringList read FDirList;
  28.   published
  29.     property UseFileList: Boolean read FUseFileList write SetFileList;
  30.     property UseDirList: Boolean read FUseDirList write SetDirList;
  31.     property OnFoundFile;
  32.     property OnProcessDir;
  33.   end;
  34.  
  35. procedure Register;
  36.  
  37. implementation
  38.  
  39. procedure Register;
  40. begin
  41.   RegisterComponents('Unleash', [TFileIterator]);
  42. end;
  43.  
  44. destructor TFileIterator.Destroy;
  45. begin
  46.   FFileList.Free;
  47.   FDirList.Free;
  48.   inherited Destroy;
  49. end;
  50.  
  51. procedure TFileIterator.SetFileList(UseList: Boolean);
  52. begin
  53.   FUseFileList := UseList;
  54.   if FUseFileList then
  55.     FFileList := TStringList.Create
  56.   else
  57.     FFileList.Free;
  58. end;
  59.  
  60. procedure TFileIterator.SetDirList(UseList: Boolean);
  61. begin
  62.   FUseDirList := UseList;
  63.   if FUseDirList then
  64.     FDirList := TStringList.Create
  65.   else
  66.     FDirList.Free;
  67. end;
  68.  
  69. procedure TFileIterator.ProcessName(FName: String; SR: TSearchRec);
  70. begin
  71.   inherited ProcessName(FName, SR);
  72.   if FUseFileList then FFileList.Add(FName);
  73. end;
  74.  
  75. procedure TFileIterator.ProcessDir(Start: string);
  76. begin
  77.   inherited ProcessDir(Start);
  78.   if FUseDirList then FDirList.Add(CurDir);
  79. end;
  80.  
  81. end.
  82.