Is it possible to use FileExists
or FileSearch
(or any other Pascal function) to determine whether a file pattern exists in a given folder?
Eg:
if (FileExists('c:\folder\*.txt') = True) then
Currently, there is no function that would support wildcards for checking whether a certain file exists or not. That's because both FileExists
and FileSearch
functions internally use NewFileExists
function which, as the comment in the source code states, doesn't support wildcards.
Fortunately, there is the FindFirst
which supports wildcards, so you can write a function like follows for your task:
[Code]
function FileExistsWildcard(const FileName: string): Boolean;
var
FindRec: TFindRec;
begin
Result := False;
if FindFirst(FileName, FindRec) then
try
Result := FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0;
finally
FindClose(FindRec);
end;
end;
Its usage is same as of FileExists
function, just you can use wildcards for the search like describes the MSDN reference for the lpFileName
parameter of the FindFirstFile
function. So, to check if there's a file with txt
extension in the C:\Folder
directory you can call the above function this way:
if FileExistsWildcard('C:\Folder\*.txt') then
MsgBox('There is a *.txt file in the C:\Folder\', mbInformation, MB_OK);
Of course the file name to be searched may contain a partial name of the file, like e.g.:
if FileExistsWildcard('C:\Folder\File*.txt') then
MsgBox('There is a File*.txt file in the C:\Folder\', mbInformation, MB_OK);
Such pattern will match files like e.g. C:\Folder\File12345.txt
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With