Russian Qt Forum
Января 16, 2025, 10:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рекурсивный проход по директориям  (Прочитано 5752 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Мая 04, 2010, 09:02 »

На первый взгляд задача очень простая, но при некоторых критериях она заметно усложняется, задача такая мне нужно написать COM объект на основе микросовтовского ATL, в которой нужно рекурсивно пройтись по директориям, я пробовал использовать класс  микросовтовский CFile ,но он работает только если приложение MFC, пробовал подключить boost, но если написать даже вот так

Код:
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
using namespace boost::filesystem;
int main()
{
    directory_iterator dir(current_path());
    return 0;
}
то софтина немедленно вылетает, при том если тот же код собрать MinGW то все хорошо отрабатывает. Паганый Microsoft!!!! Злой Злой 
Кто работал с Visual Studio какие есть еше варианты?
Записан
niXman
Гость
« Ответ #1 : Мая 04, 2010, 11:23 »

на boost не гнать.
этот код компилится и работает. наверное проблема из-за чего-то еще.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Мая 04, 2010, 12:09 »

Цитата: niXman
на boost не гнать.

На него родимого невкоем случае Улыбающийся я больше на компилятор микросовтовский ругаюсь, никогда у меня с ним понимания не было Улыбающийся
« Последнее редактирование: Мая 04, 2010, 12:19 от ecspertiza » Записан
garryHotDog
Гость
« Ответ #3 : Мая 04, 2010, 17:26 »

что то я не догнал?! в чем проблема? Рекурсивный проход в QT ??
Записан
niXman
Гость
« Ответ #4 : Мая 04, 2010, 17:33 »

Цитировать
Рекурсивный проход в QT ??
нет, при помощи boost::filesystem::recursive_directory_iterator
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Мая 04, 2010, 17:50 »

А вот вы оба и не угадали, нужно написать dll-ку в которой будет рекурсивный проход по директориям, тянуть за собой Qt слишком накладно, boost хороший вариант ,но с ним как то не прокатило, интересовали стандартные средства C++, или может либы ,но что бы потом зависимостей немного было ,а лучше вообще без них, сделал вот так.

Код:
void recursive_dir(std::string dir,std::string last)
{
    std::string strWildcard = dir + "/*.*";
    std::string lastDir = last;
    _finddata_t s_Dir;
    intptr_t hDir;
    if( (hDir = _findfirst( strWildcard.c_str(), &s_Dir )) == -1L )
        return;
    do
    {
        if( s_Dir.name[ 0 ] != '.' && ( s_Dir.attrib & _A_SUBDIR ))
        {
            recursive_dir(dir + '/' + s_Dir.name,lastDir+"/"+s_Dir.name);
        }else if (s_Dir.name[ 0 ] != '.' )
            std::cout << "File: " << lastDir << "/" << s_Dir.name <<  std::endl;
    } while( _findnext( hDir, &s_Dir ) == 0 );
    _findclose( hDir );
    return;
}
Записан
niXman
Гость
« Ответ #6 : Мая 04, 2010, 18:49 »

ради любопытства, разобрался бы с причиной ошибки.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #7 : Мая 04, 2010, 19:26 »

это само собой, только длл-ку допишу, сроки стынут Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.118 секунд. Запросов: 22.