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

 
Определение имён файлов
dEEp
Отправлено: 10.05.2005, 03:36


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

Группа: Участник
Сообщений: 69



Каким образом можно определить все имена файлов, имеющихся в данной или определённой директории? Т.е. список всех имён.
Aptem
Отправлено: 10.05.2005, 07:11


Мастер участка

Группа: Участник
Сообщений: 349



CODE
 AnsiString Directory, File;
 TSearchRec sr;

 if ( SelectDirectory ( Directory, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, 1000 ) )
 {
   if ( FindFirst ( Directory + "\*.*", faAnyFile, sr ) == 0 )
   {
     do
     {
       if ( ( sr.Name == "." ) ) continue;

       if ( !( sr.Attr & faHidden ) && !( sr.Attr & faSysFile ) && !( sr.Attr & faDirectory ) && !( sr.Attr & faVolumeID ) )
       {
         File = sr.Name;

//вот тебе имя файла, а дальше уже твои действия
       
       }
     } while ( FindNext ( sr ) == 0 );

     FindClose ( sr );
   }
  }
Guest
Отправлено: 10.05.2005, 10:26


Не зарегистрирован







do
{
if ( ( sr.Name == "." ) ) continue;
if ( ( sr.Name == ".." ) ) continue;

// if ( !( sr.Attr & faHidden ) && !( sr.Attr & faSysFile ) && !( sr.Attr & //faDirectory ) && !( sr.Attr & faVolumeID ) )
// {
File = sr.Name;

//вот тебе имя файла, а дальше уже твои действия

// }
} while ( FindNext ( sr ) == 0 );

Это дополнение. Апроверка атрибутов зачем , нужны же все файлы, так зачем лишнее условие.
Sl@Sh
Отправлено: 10.05.2005, 11:42


Мастер участка

Группа: Участник
Сообщений: 383



CODE

TSearchRec sr;
AnsiString fPath, fExt; //Путь и расширение
if (FindFirst(fPath + "*.*", faAnyFile, sr) == 0)
{
    do
    {
        if (sr.Attr & faDirectory)
        {
            if (sr.Name != ".")
            if (sr.Name != "..") continue;
        }  else if (ExtractFileExt(sr.Name) == fExt) //Найден файл с нужным расширением
    }

    while (FindNext(sr) == 0);
    FindClose(sr);
}
Application->ProcessMessages();


Немного переработан. Найдёт файлы со всеми возможными атрибутами.

Вернуться в Вопросы программирования в C++Builder