Mega Code Archive

 
Categories / Delphi / Files
 

Looking for files

Title: Looking for files Question: How can I get the names of the files in a directory? Answer: FindFirst, FindNext, FindClose ------------------------------ To search for files matching a certain filename specification (like 'C:\WINDOWS\*.INI') we use the FindFirst and FindNext functions and the FindClose procedure. For them to work, we need a TSearchRec record that among other things will contain information of a file matching the search criteria. We use a code like the following: var SearchRec: TSearchRec; begin if FindFirst('C:\WINDOWS\*.INI', attributes, SearchRec) = 0 then begin repeat // Here we process each fond file. // Its info is in SearchRec. until FindNext(SearchRec) 0; FindClose(SearchRec); end; end; If FindFirst returns 0, it means it found at least one file matching the specified criteria. Then we use FindNext to retrieve the info of the next files that match the criteria one by one. FindNext also returns 0 if it finds a file. After we processed all files, we should close the search calling FindClose that releases some resources in SearchRec that were allocated by FindFirst. If attributes is 0, FindFirst and then FindNext will only find normal files, meaning that files marked as Archive, Read-only, Hidden, System, Directory or Volume will be excluded from the search. To include those files in the search, add (Or) their corresponding constants: faArchive, faReadOnly, faHidden, faSysFile, faDirectory and faVolumeID. TSearchRec ---------- This structure (record) contains the information of a file found by file FindFirst and FindNext. The most important field is Name (a string), which contains the long name of the found file, without the path. type TSearchRec = record Time: Integer; Size: Integer; Attr: Integer; Name: TFileName; ExcludeAttr: Integer; FindHandle: THandle; FindData: TWin32FindData; // Additional information end; The Time field is a DOS date-and-time stamp and represents the date of the last modification made to the file. You can convert this value to a TDateTime type using FileDateToDateTime.