Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись содержимого папок в массив, Запись содержимого папок в массив 
:(
    Опции темы
Sancher
Дата 30.10.2005, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.9.2005

Репутация: нет
Всего: нет



Подскажите, пожалуйста, есть вопрос:
Есть N папок в каждой папке Mn число файлов
Необходимо заполнить массив строк a[Mn*N][2],
где a[*][1]-имя папки, а a[*][2]-имя файла в этой папке.
Как осуществить такого рода сканирование?
Заранее спасибо.

PM MAIL   Вверх
_hunter
Дата 31.10.2005, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



пишеш рекурсивную функцию для поиска файлов. передаеш в нее кроме всего прочего имя папки, в которой в данный момент ищутся файлы. и каждый найденный файл записываеш в массив в нужном тебе формате


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Sancher
Дата 31.10.2005, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.9.2005

Репутация: нет
Всего: нет



Но я не знаю имен файлов(что мне искать). Как этот поиск реализовать?
PM MAIL   Вверх
_hunter
Дата 31.10.2005, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



задаеш маску *.*


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Artemon
Дата 3.11.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



FindFirst, FindNext


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
sexton
Дата 7.11.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 5.5.2004
Где: Ульяновск

Репутация: 5
Всего: 9



Я лично в свое время накопал два способа реализации данного вопроса:

1.
Код


void ListFiles(AnsiString path, TStrings* List)
{
// Эта процедура выводит список файлов и вызывает
// саму себя для всех каталогов
TSearchRec sr;
if (FindFirst(path+"*.*", faAnyFile, sr) == 0)
{
 do
 {
 if (sr.Attr & faDirectory)
  {
  if (sr.Name!=".")
  if (sr.Name!="..")
   {
   ListFiles(path+sr.Name+"\\",List);// Рекурсивный вызов
   }
  }
  else
   {
   AnsiString Ext=ExtractFileExt(sr.Name).UpperCase();
   if (Ext==".CPP")
   List->Add(path+sr.Name);
   }
 }
 while (FindNext(sr) == 0);
 FindClose(sr);
}
Application->ProcessMessages();
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListFiles("c:\\",Memo1->Lines);
}



2.
Код


// Примечание: vasCurDir - каталог для поиска, List - переменная для хранения перечня имен 
// файлов. 

void ListFiles(AnsiString vasCurDir, TStringList* List)
{
  AnsiString vasFilename,    //имя файла
             vasFileMask;    //маска файла
 //TSearchRec информация о файле
  TSearchRec tFileInfo;
 //Определяем каталог, если корневая директория удаляем слэш
  if(vasCurDir.Length() == 3)
    vasCurDir=vasCurDir.Delete(3,1);
 //Задаем маску
  vasFileMask="*.*";
 //Определяем имя файла
  vasFilename=vasCurDir+"\\"+vasFileMask;
 //Сюда выведем список файлов
  List->Clear();
  if(FindFirst(vasFilename,faAnyFile,tFileInfo) == 0)
  {
    while(1)
    {
   //Исключаем корневую
      if((tFileInfo.Name != ".")&(tFileInfo.Name != ".."))
    //Исключаем каталоги
        if(tFileInfo.Size != 0 )
          List->Add(tFileInfo.Name);
      if(FindNext(tFileInfo) != 0)
        break;
    }
  }
}


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

Это сообщение отредактировал(а) sexton - 17.11.2005, 10:11
PM MAIL WWW ICQ   Вверх
Sancher
Дата 7.11.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.9.2005

Репутация: нет
Всего: нет



Теперь все понятно.Спасибо большое.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0985 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.