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

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем xa4ik, 15 мар 2012.

  1. xa4ik

    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" почему программа по заданому имени ищет только в каталоге?? и как исправить?
     
  2. xa4ik

    xa4ik Гость



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

Поделиться этой страницей