enton |
Отправлено: 16.02.2007, 14:11 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 44
|
так же нужно записать в переменную кол-во файлов в этой папке. как? |
|
Tantos |
Отправлено: 16.02.2007, 14:36 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Инкрементировать счетчик при поиске файлов или заносить в список/структуру/etc и потом смотреть кол-во элементов в них.
|
|
Termi_uc |
Отправлено: 16.02.2007, 18:29 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 61
|
Примерно так:
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
|
|
Termi_uc |
Отправлено: 16.02.2007, 18:31 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 61
|
Там проблемы будут с русским названием файла, так что вот
|
|
enton |
Отправлено: 17.02.2007, 17:31 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 44
|
пример самый что ненаесть наглядный, думаю на его основе все и навояю. хорошо что он с комментами) |
|