The meaning of the parameters of FindFiles(FilesList, StartDir, FileMask) is as follows:
Examples of use: Find all files on the entire C: disk with the name 'letter1.doc' : If you want to test this procedure, start a new project and add some components to the form: two Edits (one for the starting directory, one for the mask), a Button, a Label and a ListBox. implementation .... // Recursive procedure to build a list of files procedure FindFiles(FilesList: TStringList; StartDir, FileMask: string); var SR: TSearchRec; DirList: TStringList; IsFound: Boolean; i: integer; begin if StartDir[length(StartDir)] <> '\' then StartDir := StartDir + '\'; { Build a list of the files in directory StartDir (not the directories!) } IsFound := FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0; while IsFound do begin FilesList.Add(StartDir + SR.Name); IsFound := FindNext(SR) = 0; end; FindClose(SR); // Build a list of subdirectories DirList := TStringList.Create; IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0; while IsFound do begin if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then DirList.Add(StartDir + SR.Name); IsFound := FindNext(SR) = 0; end; FindClose(SR); // Scan the list of subdirectories for i := 0 to DirList.Count - 1 do FindFiles(FilesList, DirList[i], FileMask); DirList.Free; end; // Example: how to use FindFiles procedure TForm1.ButtonFindClick(Sender: TObject); var FilesList: TStringList; begin FilesList := TStringList.Create; try FindFiles(FilesList, EditStartDir.Text, EditFileMask.Text); ListBox1.Items.Assign(FilesList); LabelCount.Caption := 'Files found: ' + IntToStr(FilesList.Count); finally FilesList.Free; end; end; |
DC Library FAQ Crash Course Delphi Tips Source Code Downloads Links
© Copyright 1999-2019
DelphiLand