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

проход по каталогу на всю глубину

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



Зарегистрирован: 17.06.2003
Сообщения: 8
Откуда: Ставрополь

СообщениеДобавлено: Пн Июл 16 2007 21:40    Заголовок сообщения: проход по каталогу на всю глубину Ответить с цитатой

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

Заранее спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dimasm



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

СообщениеДобавлено: Ср Июл 18 2007 10:03    Заголовок сообщения: Ответить с цитатой

не знаю на счёт быстроты, но я делал так
Код:
void ScanDir(String dir)
{
    TSearchRec SearchRec;
    FindFirst(dir+"\\*.*", faAnyFile, SearchRec);
    do
    {
        if(SearchRec.Size == 0 &&  SearchRec.Name.Length()>2      )
        ScanDir(dir+"\\"+SearchRec.Name);
        else
        {
          .....
        };
    }while (FindNext(SearchRec)==0);
    FindClose(SearchRec);
};

int main(int argc, char* argv[])
{
    .....
    printf("Scaning & copying..\n");
    ScanDir("c:");
    ...

_________________
С уважением Dimasm
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
hotice



Зарегистрирован: 17.06.2003
Сообщения: 8
Откуда: Ставрополь

СообщениеДобавлено: Ср Июл 18 2007 16:38    Заголовок сообщения: Ответить с цитатой

Dimasm писал(а):
не знаю на счёт быстроты, но я делал так
Код:
void ScanDir(String dir)
{
    TSearchRec SearchRec;
    FindFirst(dir+"\\*.*", faAnyFile, SearchRec);
    do
    {
        if(SearchRec.Size == 0 &&  SearchRec.Name.Length()>2      )
        ScanDir(dir+"\\"+SearchRec.Name);
        else
        {
          .....
        };
    }while (FindNext(SearchRec)==0);
    FindClose(SearchRec);
};

int main(int argc, char* argv[])
{
    .....
    printf("Scaning & copying..\n");
    ScanDir("c:");
    ...


как я понимаю это классическая рекурсивная реализация прохода по каталогу. Другой в нете я не встречал. А что это за структура
Код:
SearchRec
.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dimasm



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

СообщениеДобавлено: Чт Июл 19 2007 17:04    Заголовок сообщения: Ответить с цитатой

hotice писал(а):
как я понимаю это классическая рекурсивная реализация прохода по каталогу. Другой в нете я не встречал. А что это за структура
Код:
SearchRec
.

Ну а какой алгоритм ты ещё хотел увидеть? тут вариантов не много...
TSearchRec - структура специально для поиска файлов. юзаю C++Builder
_________________
С уважением Dimasm
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
hotice



Зарегистрирован: 17.06.2003
Сообщения: 8
Откуда: Ставрополь

СообщениеДобавлено: Чт Июл 19 2007 17:27    Заголовок сообщения: Ответить с цитатой

Цитата:

Ну а какой алгоритм ты ещё хотел увидеть? тут вариантов не много...
TSearchRec - структура специально для поиска файлов. юзаю C++Builder


а можешь подсказать как этот код под VC++ переделатьа то он у меня на эту структуру ругается.

и скажи плз ты String из заголовочного <string> берёшь или какой другой юзаешь?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dimasm



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

СообщениеДобавлено: Чт Июл 19 2007 18:22    Заголовок сообщения: Ответить с цитатой

из MSDN
WIN32_FIND_DATA

The WIN32_FIND_DATA structure describes a file found by the FindFirstFile, FindFirstFileEx, or FindNextFile function.

typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;

Поищи подробней
String У меня кажется в VCL... а у тебя MFC, надо там искать
_________________
С уважением Dimasm
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
hotice



Зарегистрирован: 17.06.2003
Сообщения: 8
Откуда: Ставрополь

СообщениеДобавлено: Пт Июл 20 2007 20:01    Заголовок сообщения: Ответить с цитатой

Dimasm писал(а):
из MSDN
WIN32_FIND_DATA

The WIN32_FIND_DATA structure describes a file found by the FindFirstFile, FindFirstFileEx, or FindNextFile function.

typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;

Поищи подробней
String У меня кажется в VCL... а у тебя MFC, надо там искать


спасибо, посмотрю
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: 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
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...