Поиск Файлов На Пк

  • Автор темы xa4ik
  • Дата начала
X

xa4ik

#1
Вот у меня есть код поиска
C++:
void Scan(AnsiString Path)
{
TSearchRec sr;
if(FindFirst(Path + "*.*", faAnyFile, sr) == 0)
{
do
{
if(sr.Attr & faDirectory)
{
if((sr.Name != ".") && (sr.Name != ".."))
Scan(Path + sr.Name + "\\");
}
else
{
if(ExtractFileExt(sr.Name) == ".txt")
Form1->Memo1->Lines->Add(Path + sr.Name); //вывод в мемо
}
}
while(FindNext(sr) == 0);
FindClose(sr);
}
}

если я ввожу в

C++:
 if(FindFirst(Path + "*.*", faAnyFile, sr) == 0)
к примеру делаю

C++:
 if(FindFirst(Path + "123.txt", faAnyFile, sr) == 0)
файл "123.txt" находит, но только в корне диска в котором ищу, или в папке которую указываю.
Когда я оставляю поле
C++:
 if(FindFirst(Path + "*.*", faAnyFile, sr) == 0)
а
C++:
 if(ExtractFileExt(sr.Name) == ".txt")
либо
C++:
 if(FindFirst(Path + "*.txt", faAnyFile, sr) == 0)
и
C++:
 if(ExtractFileExt(sr.Name) == ".txt")
мне выдают файлы и с каталога и с под каталогов, все в формате "txt" почему программа по заданому имени ищет только в каталоге?? и как исправить?
 
X

xa4ik

#2
Вот у меня есть код поиска
C++:
void Scan(AnsiString Path)
{
TSearchRec sr;
if(FindFirst(Path + "*.*", faAnyFile, sr) == 0)
{
do
{
if(sr.Attr & faDirectory)
{
if((sr.Name != ".") && (sr.Name != ".."))
Scan(Path + sr.Name + "\\");
}
else
{
if(ExtractFileExt(sr.Name) == ".txt")
Form1->Memo1->Lines->Add(Path + sr.Name); //вывод в мемо
}
}
while(FindNext(sr) == 0);
FindClose(sr);
}
}

если я ввожу в

C++:
 if(FindFirst(Path + "*.*", faAnyFile, sr) == 0)
к примеру делаю

C++:
 if(FindFirst(Path + "123.txt", faAnyFile, sr) == 0)
файл "123.txt" находит, но только в корне диска в котором ищу, или в папке которую указываю.
Когда я оставляю поле
C++:
 if(FindFirst(Path + "*.*", faAnyFile, sr) == 0)
а
C++:
 if(ExtractFileExt(sr.Name) == ".txt")
либо
C++:
 if(FindFirst(Path + "*.txt", faAnyFile, sr) == 0)
и
C++:
 if(ExtractFileExt(sr.Name) == ".txt")
мне выдают файлы и с каталога и с под каталогов, все в формате "txt" почему программа по заданому имени ищет только в каталоге?? и как исправить?


САМ НАШЕЛ ОТВЕТ
C++:
if((sr.Name != ".") && (sr.Name != ".."))
Scan(Path + sr.Name + "\\");
если сделать
C++:
if((sr.Name != ".") && (sr.Name == ".."))
Scan(Path + sr.Name + "\\");
все будет ок