• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

xa4ik

Вот у меня есть код поиска
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

Вот у меня есть код поиска
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 + "\\");
все будет ок
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!