Прогрмма поиска дублей файлов! Помогите! Кто может!

Pit10 04.06.2004 - 13:17 | Задали на курсовой программу которая ищет файли с одинаковыми названиями на диске. С возможностью регулирования ее дотошности. Т.е. Учитывание/неучитывание регистра, сравнение по размерам. Если все совпадает сравнить по сожержимому. Дело в том что осталась неделя - я еще не начинал. Кто может. Мне нужны хотябы функции с помошью которых можно будет сканить иректории и имена файлов. Дальше думаю разберусь. И еще. Я пишу под MFC и VC++ да и в Борланде тоже.
Сергей 1 - 04.06.2004 - 13:20 | Копай, начиная с функций API FindFirstFile/FindNextFile.
Pit10 2 - 04.06.2004 - 13:30 | Если мне память не изменяет, это функции для заданных имен файлов (Я могу ошибаться). Конечно можно искать все возможные названия файлов в дереве (Ну или хотябы в массиве) но представьте себе сколько это вариантов перебора для поля в 255 символов с алфавитом около 100и?
Pit10 3 - 04.06.2004 - 14:09 | А вообще огромное спасибо вам Сергей. Щас начал в хелпе лазать, там давольно неплохие функции есть по возврату имен и т.п. То что надо. Еще бы разобраться. А времени нет!..
Hook 4 - 04.06.2004 - 14:11 | imho надо просканировать весь диск, загнять все файлы и их параметры в базу данных, отсортировать по этим параметром и пройтись по это бызе с начала в конец, сравнивая последующую запись с текущей по нужным параметрам.
FWP 5 - 04.06.2004 - 14:19 | Создаешь запись: record name : String; size : Integer; end; Проходишь по диску и вставляешь инфу обо всех файлах в упорядоченный список (или массив). Если имена совпали, то смотришь размер, если ... Ну ты понял.
LF 6 - 04.06.2004 - 14:23 | Какие базы, какие записи, вы что. Юзать обычный stl::map делов на 10 минут
LF 7 - 04.06.2004 - 14:32 | И регистра у файлов нет
siapk 8 - 04.06.2004 - 14:46 | а лучше загонять в коллекцию.... сортировка идет сразу ...
Сергей 9 - 04.06.2004 - 14:52 | [2] Не совсем так. При поиске (FindFirst/FindNext) имя файла может задаваться при помощи "wildcards", т.е. можно в имени использовать * и ? Соответственно, если искать файл с "любым" (*) именем, то можно перебрать все файлы. А для поиска совпадений, конечно, самое простое - использовать std::map, очень рекомендую.
нонейм 10 - 04.06.2004 - 15:34 | 7: регистр у файлов есть :) уже давным-давно :)
Сергей 11 - 04.06.2004 - 15:38 | [8] "коллекция" не лучше :) в std::map точно так же происходит сортировка элементов.
LF 12 - 04.06.2004 - 20:40 | Регистр есть, но на NFTS например он не учитывается
Chaos 13 - 04.06.2004 - 20:51 | Мне почему-то казалось, что и map, и vector, и list - это все коллекции
Сергей 14 - 04.06.2004 - 23:25 | [13] Это, пожалуй, вопрос терминологии. В C++ STL устоялся термин "контейнер", в Delphi/Builder - "коллекция". Siapk противопоставил map и "коллекцию" (см. сообщения [6] и [8]), из чего я сделал вывод, что он имеет ввиду именно TCollection из продуктов Borland. В этом смысле, думаю, map ничуть не хуже коллекции :)
Sabrian 15 - 05.06.2004 - 03:39 | Какие коллекции зачем? FindFirstFileA/FindNextFileA c маской * перечислит все файлы в директории. Присобач рекурсивный обход каталогов и все, проверяй каждый полученный файл. Даже с учетом немерянных наворотов поиска и мега-выводом на консоль тут 2-3 часа работы, ну новичку до 12, неделя это целая вечность. Как раз хватит чтоб выпить пивка для создания рабочей аимосферы :)
Sabrian 16 - 05.06.2004 - 03:41 | HANDLE FindFirstFile( LPCTSTR lpFileName, // pointer to name of file to search for LPWIN32_FIND_DATA lpFindFileData // pointer to returned information ); Return Values If the function succeeds, the return value is a search handle used in a subsequent call to FindNextFile or FindClose. If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.
Сергей 17 - 05.06.2004 - 10:45 | [15] Поясняю, зачем коллекции :) В твоем сообщении ты пишешь: "Присобач рекурсивный обход каталогов и все, проверяй каждый полученный файл". Так вот, чтобы "проверить каждый полученный файл", необходимо каким-то образом знать, какие файлы нам уже встречались, т.е. нужно "запоминать" имена найденных фалов в какой-то структуре; так вот "коллекции" тут и были бы очень удобными.
LF 18 - 05.06.2004 - 13:14 | Sabrian: Поработав например с map ты уде не будешь извращатсья с рекурсией
Sabrian 19 - 05.06.2004 - 13:58 | Опа, да я не прав, программа ведь должна искать любые одинаковые файлы, буду внимательнее читать темы.
Hook 20 - 06.06.2004 - 14:25 | Под "базой данных" я имел любую списочную организацию данных, а уж что это будет - кому с чем удобнее работать.

>>