Функция FileSearch в Delphi поиск файла в одной или более папках.
SysUtils unit
function FileSearch (const FileName, DirectoryList : string) : string;
Функция FileSearch осуществляет поиск файла в одной или более папках. Необходимо указывать не только название папки, но и полный адрес этой папки.
Имя файла может быть как файловым именем, так и полным адресом файла.
Если файл будет найден, то возвращается полный адрес файла включая имя файла, в случае не нахождения искомого файла будет возвращена пустая строка.
ПРЕДУПРЕЖДЕНИЕ: ВСЕГДА сначала поиск будет проходить в текущей папке (смотри GetCurrentDir), независимо от перечисленных директорий. Если файл обнаруживается там, то путь файла возращён не будет, а ТОЛЬКО имя файла.
Примечание.
Если любой из указанных каталогов не существует, никакая ошибка не будет выброшена.
Директивный список может быть пустой строкой – тогда будет обыскан только текущий каталог.
Функция FileSearch: Поиск в текущем каталоге и вне
var
myFile : TextFile;
fileName : string;
fullFilePath : string;
dir1, dir2 : string;
begin
// Файл который мы будет искать
fileName := 'Test.txt';
// Запись текстового файла в текущий каталог
AssignFile(myFile, fileName);
ReWrite(myFile);
Write(myFile, 'Hello World');
CloseFile(myFile);
// Запись текстового файла в другой каталог
AssignFile(myFile, 'C:\Program Files\'+fileName);
ReWrite(myFile);
Write(myFile, 'Hello World');
CloseFile(myFile);
// Определение двух каталогов, где мы хотим искать файл
dir1 := 'C:\No such directory';
dir2 := 'C:\Program Files';
// Поиск файла
fullFilePath := FileSearch(fileName, dir1+';'+dir2);
// Если мы поищем сейчас, мы найдем его в текущем каталоге
if fullFilePath = ''
then ShowMessage(fileName+' не найден')
else ShowMessage(fullFilePath+' найден');
// Теперь удаляем Test.txt из текущего каталога и повторяем поиск
DeleteFile(fileName);
// Если мы поищем теперь, мы найдем его в одной из директорий поиска
fullFilePath := FileSearch(fileName, dir1+';'+dir2);
if fullFilePath = ''
then ShowMessage(fileName+' не найден')
else ShowMessage(fullFilePath+' найден');
end;
Результат
Test.txt найден
C:\Program Files\Test.txt найден
Похожие функции, процедуры и команды
FindClose — закрывает успешный FindFirst поиск файла.
FindFirst — находит все файлы, соответствующие маске файла и атрибутов.
FindNext — находит следующий файл после успешного FindFirst.
TSearchRec — запись, используемая для хранения данных в FindFirst и FindNext.
