C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 Здравствуйте, гость ( Вход | Регистрация )   Скачать форум | Поиск по Форуму | Участники | Помощь
 Поиск по:   сайтy   
   архиву форума   
  ОтветитьНовая темаНовый опрос
каким образом можно посчитать кол-во файлов, используя FindFirst
« предыдущая тема | следующая тема » Подписаться на тему | Отправить тему на E-mail | Распечатать тему
enton
Отправлено: 16.02.2007, 14:11 Цитировать


Дежурный стрелочник


Группа: Участник
Сообщений: 44
Пользователь № 4258
Регистрация: 12.02.07



так же нужно записать в переменную кол-во файлов в этой папке. как?
 
Послать сообщение E-mail адрес  Top
Tantos
Отправлено: 16.02.2007, 14:36 Цитировать


Станционный диспетчер


Группа: Участник
Сообщений: 108
Пользователь № 2982
Регистрация: 15.11.06



Инкрементировать счетчик при поиске файлов или заносить в список/структуру/etc и потом смотреть кол-во элементов в них.

--------------------
Чем больше узнаю людей, тем больше люблю компьютеры.
 
Послать сообщение ICQ  Top
Termi_uc
Отправлено: 16.02.2007, 18:29 Цитировать


Дежурный стрелочник


Группа: Участник
Сообщений: 61
Пользователь № 4206
Регистрация: 09.02.07



Примерно так:
CODE

bool MatchAttrs(DWORD flags, DWORD attrs)
{
 return (flags & attrs) == flags;
}
//---------------------------------------------------------------------------

bool SearchInFolder(AnsiString folder, AnsiString mask, DWORD flags,
                       TStrings * names, bool addpath = false)
{
 void * hSearch;
 WIN32_FIND_DATA * FindData = new WIN32_FIND_DATA();
 AnsiString strSearchPath;
 bool bRes;

 strSearchPath = folder + '\\' + mask;
 bRes = false;

 hSearch = FindFirstFile(strSearchPath.c_str(), FindData);
 if (hSearch != INVALID_HANDLE_VALUE)
 {
   while(FindNextFile(hSearch, FindData) == true)
     if ((AnsiString(FindData->cFileName) != "..") &&
         (AnsiString(FindData->cFileName) != "."))
     {
       if (MatchAttrs(flags, FindData->dwFileAttributes))
       {
         if (addpath)
           names->Add(folder + '\\' + FindData->cFileName);
         else
           names->Add(FindData->cFileName);
         bRes = true;
       }
     }

   FindClose(hSearch);
 }
 return bRes;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 DWORD flags = 0;
 if (chkDirs->Checked) flags = flags | FILE_ATTRIBUTE_DIRECTORY;
 if (chkHidden->Checked) flags = flags | FILE_ATTRIBUTE_HIDDEN;
 if (chkSystem->Checked) flags = flags | FILE_ATTRIBUTE_SYSTEM;
 if (chkReadOnly->Checked) flags = flags | FILE_ATTRIBUTE_READONLY;
 if (chkArchive->Checked) flags = flags | FILE_ATTRIBUTE_ARCHIVE;

 lblFound->Caption = "Поиск...";
 lstFiles->Clear();
 Refresh();

 if (!SearchInFolder(txtFolder->Text, txtMask->Text, flags,
                       lstFiles->Items))
   lblFound->Caption = "Поиск не дал результатов";
 else
   lblFound->Caption = "Найдено объектов: " + IntToStr(lstFiles->Count);
}

Пример из книги "Delphi. Трюки и эффекты".

Прикрепляю ещё проект на Builder'е - может пригодится кому.

Отредактировано Termi_uc - 16.02.2007, 19:51

User Attached Image Скачать файл
Поиск_файлов_test.zip ( Количество загрузок: 537 )




--------------------
- Где точка самореализации, мысль ясна, отвечайте. Но по очереди и незабывай собачку п.
- Вечность вычисляет массивы и информация кодируется в плоти, как может одна капелька разрушеть все, где д., Старина д.?
 
Послать сообщение E-mail адрес  Top
Termi_uc
Отправлено: 16.02.2007, 18:31 Цитировать


Дежурный стрелочник


Группа: Участник
Сообщений: 61
Пользователь № 4206
Регистрация: 09.02.07



Там проблемы будут с русским названием файла, так что вот

User Attached Image Скачать файл
Found_files_testt.zip ( Количество загрузок: 577 )




--------------------
- Где точка самореализации, мысль ясна, отвечайте. Но по очереди и незабывай собачку п.
- Вечность вычисляет массивы и информация кодируется в плоти, как может одна капелька разрушеть все, где д., Старина д.?
 
Послать сообщение E-mail адрес  Top
enton
Отправлено: 17.02.2007, 17:31 Цитировать


Дежурный стрелочник


Группа: Участник
Сообщений: 44
Пользователь № 4258
Регистрация: 12.02.07



пример самый что ненаесть наглядный, думаю на его основе все и навояю. хорошо что он с комментами)
 
Послать сообщение E-mail адрес  Top
4 ответов с: 16.02.2007, 14:11 Подписаться на тему | Отправить тему на E-mail | Распечатать тему

Back to Вопросы программирования в C++Builder
ОтветитьНовая темаНовый опрос