Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
☆ Форумчанин(FSC)☆
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
1

Поиск файлов по нескольким расширениям

22.12.2014, 08:41. Показов 1617. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void ListFiles(AnsiString path)
{
 
  if (FindFirst(path+"*.*", !faDirectory , sr) == 0)
  {
    do
    {
      //List->Add("Путь: "+path+"  Имя: "+sr.Name+"  Размер: "+sr.Size);
 
   if(Form4->CheckBox2->Checked==true)
   {
   Form4->Memo4->Lines->Add(path+sr.Name);
   }
   //-----------------
   if(Form4->CheckBox2->Checked==false)
   {
    Form4->Memo9->Lines->Add(path+sr.Name);
 
   }
       //
 
     } while (FindNext(sr) == 0);
 
    FindClose(sr);
  }
}
Кто знает,как здесь можно реализовать поиск файлов по нескольким расширениям, а не только по одному?

Добавлено через 10 часов 54 минуты
Никто не в курсе?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2014, 08:41
Ответы с готовыми решениями:

Есть ли более изящный вариант поиска файлов по нескольким расширениям
private void SetCurrentDirectory(string filePath) { List<string>...

Поиск файлов по списку имён и по заданным расширениям с выводом полных имён найденных в текстовый файл
Доброго времени суток! Стоит задача сделать батник. Для поиска файлов по списку имён (кириллица)...

Поиск файлов по нескольким разделам
Помогите пожалуйста переделать код, чтобы поиск был по нескольким разделам с несколькими...

Поиск файлов по нескольким маскам
помогите реализовать поиск файлов сразу по нескольким маскам, используя этот код: procedure...

2
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.12.2014, 10:50 2
Вот пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListBox1->Clear();
AnsiString Path = "D:\\";//путь к папке поиска по расширению
TSearchRec sr;/// Структура заполняется информацией о найденном файле
                           // по вызову ф-ций FindFirst и FindNext
int iAttributes = faAnyFile;// константа faAnyFile означает, что функция  FindFirst будет искать любые файлы
int done;
TStringList * list = new TStringList();
list->Add("*.doc");
list->Add("*.mp3");
for (int i = 0; i < 2; i++)
{
Path = Path + list->Strings[i];
done = FindFirst( Path, iAttributes, sr );//передаём параметры в функцию и приравниваем к переменной
while(!done)// ищем пока не найдём все файлы с заданным расширением в папке
{
ListBox1->Items->Add(ChangeFileExt(sr.Name,""));//если нашли заносим название файла в ListBox и при этом обрезаем расширение файла
done = FindNext(sr);//ищем дальше
}
FindClose(sr); //закрываем поиск
Path = "D:\\";
}
delete list;
list = NULL;
}
1
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
22.12.2014, 12:10 3
Или вот так. Все по полочкам, все списки под рукой - делай с ними что хочешь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    typedef std::map < String, TStringDynArray > t_files_by_ext_map;
 
    TStringDynArray exts( SplitString( edit_extentions->Text, "|" ) );
    t_files_by_ext_map files_by_ext;
 
    for ( int i( 0 ), i_limit( exts.Length ); i < i_limit; ++i )
    {
        files_by_ext[ exts[ i ] ] = TDirectory::GetFiles(
            TPath::GetFullPath( edit_path->Text ),
            exts[ i ],
            TSearchOption::soTopDirectoryOnly );
    }
 
    String filename;
    TFileStream * fs;
 
    for ( t_files_by_ext_map::iterator it( files_by_ext.begin( ) ), end( files_by_ext.end( ) ); it != end; ++it )
    {
        memo_1->Lines->Add( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" );
        memo_1->Lines->Add( it->first + " extention list:" );
 
        for ( int i( 0 ), i_limit( it->second.Length ); i < i_limit; ++i )
        {
            filename = it->second[ i ];
            fs = TFile::OpenRead( filename );
 
            memo_1->Lines->Add( "Путь: " + ExtractFilePath( filename ) );
            memo_1->Lines->Add( "Имя: " + TPath::GetFileNameWithoutExtension( filename ) );
            memo_1->Lines->Add( "Размер: " + IntToStr( fs->Size ) + " байт; "
                + IntToStr( Ceil( fs->Size / 1024. ) ) + " килобайт; "
                + FloatToStrF( fs->Size / 1024. / 1024., ffFixed, 15, 1 ) + " магабайт." );
            memo_1->Lines->Add( "" );
 
            delete fs;
        }
    }
Миниатюры
Поиск файлов по нескольким расширениям  
1
22.12.2014, 12:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2014, 12:10
Помогаю со студенческими работами здесь

Поиск файлов по нескольким шаблонам
как искать одновремено несколько форматов файлов к примеру *.jpg *.bmp *.png string...

Копирование файлов по списку в текстовом файле в папки с именами, соответствующими расширениям этих файлов
Добрый день, уважаемые форумчане. Прошу помощи с написанием bat-файла. Значит задача такая. Есть...

Распределение файлов по папкам, соответствующим расширениям файлов
Здравствуйте. Есть папка Downloads и в ней множество файлов с разным расширением (mp3, jpeg, rar и...

Одновременный поиск файлов по нескольким заданным путям
dir/a-d/b/s D:\Test\*.txt Данная команда найдет все файлы .txt по заданному пути. Подскажите как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru