Pascal Scripting: FindFirst
Prototype:
function FindFirst(const FileName: String; var FindRec: TFindRec): Boolean;
Description:
Retrieves information about the first file matching the wildcard specified by FileName. Returns True if successful.
TFindRec is defined as:
TFindRec = record Name: String; // name of the found file (no path) Attributes: LongWord; // file attributes SizeHigh: LongWord; // size of the file, upper 32 bits SizeLow: LongWord; // size of the file, lower 32 bits CreationTime: TFileTime; // time file was created LastAccessTime: TFileTime; // time file was last accessed LastWriteTime: TFileTime; // time file was last modified AlternateName: String; // file's short name (empty if none) FindHandle: THandle; // used internally end;
TFileTime is defined as:
TFileTime = record dwLowDateTime: DWORD; dwHighDateTime: DWORD; end;
Valid file attributes are:
FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_HIDDEN FILE_ATTRIBUTE_SYSTEM FILE_ATTRIBUTE_DIRECTORY FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_DEVICE FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_TEMPORARY FILE_ATTRIBUTE_SPARSE_FILE FILE_ATTRIBUTE_REPARSE_POINT FILE_ATTRIBUTE_COMPRESSED FILE_ATTRIBUTE_OFFLINE FILE_ATTRIBUTE_NOT_CONTENT_INDEXED FILE_ATTRIBUTE_ENCRYPTED
Remarks:
If FindFirst returns True, call FindNext to enumerate the rest of the files, and then FindClose.
Example:
The following example counts the number of files in the Windows System directory.
var FilesFound: Integer; FindRec: TFindRec; begin FilesFound := 0; if FindFirst(ExpandConstant('{sys}\*'), FindRec) then begin try repeat // Don't count directories if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then FilesFound := FilesFound + 1; until not FindNext(FindRec); finally FindClose(FindRec); end; end; MsgBox(IntToStr(FilesFound) + ' files found in the System directory.', mbInformation, MB_OK); end;
See also: