Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Кто знает

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
CHUVY



Зарегистрирован: 17.08.2004
Сообщения: 4

СообщениеДобавлено: Вт Авг 17 2004 12:00    Заголовок сообщения: Кто знает Ответить с цитатой

Есть какая то функция в С++ перебирающая все файлы поочереди
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Macr0s



Зарегистрирован: 17.08.2004
Сообщения: 5
Откуда: Энгельс

СообщениеДобавлено: Вт Авг 17 2004 12:34    Заголовок сообщения: Ответить с цитатой

Вопрос немного некорректный...
если имеется в виду поиск файлов, то есть API - FindFirstFile & FindNextFile & FindClose. чтобы пройтись по всем папкам и файлам надо юзать эти функции в рекурсии. пример использования:
Код:

void CfindfilesDlg::FindAll_Api(char*  Path)
{
   WIN32_FIND_DATA fd;
   char* fname=new char[MAX_PATH];
   fname=strcpy(fname,Path);
   strcat(fname,"\\*.*");
   HANDLE sh=FindFirstFile(fname,&fd);
   if(sh==INVALID_HANDLE_VALUE) return;
   while(FindNextFile(sh,&fd))
   {
      char* fullpath=new char[MAX_PATH];
      if(PathIsRoot(Path))sprintf(fullpath,"%s%s",Path,fd.cFileName);
      else sprintf(fullpath,"%s\\%s",Path,fd.cFileName);
      if(!strcmpi(fd.cFileName,"."))continue;
      if(!strcmpi(fd.cFileName,".."))continue;
      if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
      {
         FindAll_Api(fullpath);
         continue;
      }
      lbFiles.AddString(fullpath);
      delete[] fullpath;
      fullpath=NULL;
   }
   delete[] fname;
}


Есть похожая фишка в MFC: класс CFileFind
Код:

void CfindfilesDlg::FindAll_mfc(CString path)
{
   CFileFind ff;
   bool is=ff.FindFile(path+"\\*.*");
   while(is)
   {
      is=ff.FindNextFile();
      CString _path=ff.GetFilePath();
      bool isDir=ff.IsDirectory();
      if(ff.IsDots()) continue;
      if(isDir) FindAll_mfc(_path);
      else lbFiles.AddString(_path);
   }
}

если имелся ввиду не поиск файлов, то или я торможу или одно из двух.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...