Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 14:12   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
Радость Поиск одинаковых файлов на диске

Доброе время суток ув. программисты!
Посоветуйте что - нибудь по поводу решения такой задачки :

Цитата:
Написать простую программу для поиска файлов-дупликатов.

Поиск можно осуществлять только по диску C:. Во время поиска программа должна
отображать полосу прогресса и над ним имя обрабатываемого на данный момент файла или
каталога. Поиск можно поставить на паузу или остановить. Искать дупликаты нужно путем
сравнивания размера файлов, даты их последнего изменения и названия (содержимое файлов
сравнивать не надо, для простоты). Поиск должен быть выполнен отдельным тредом.

После поиска вывести список найденных наборов повторяемых файлов. Список должен
заполняться быстро, независимо от количества найденных дупликатов. Никаких действий с
элементами списка предусматривать не нужно.
Ни кода, ни готовых исходников я не прошу... Хотя бы просто соображений как это можно реализовать(хотя если есть код то было бы неплохо)
MeTeOpA вне форума Ответить с цитированием
Старый 02.03.2011, 14:14   #2
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

А именно интересует вопрос по поводу нахождения и сравнения одинаковых файлов
MeTeOpA вне форума Ответить с цитированием
Старый 02.03.2011, 14:26   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

для поиска фаилов и названия получаеш там же
http://www.delphibasics.ru/FindFirst.php
размера файлов - FileSize(FileName);
даты их последнего изменения - http://www.delphibasics.ru/FileAge.php
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 02.03.2011, 14:57   #4
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Цитата:
Сообщение от ArtGrek Посмотреть сообщение
для поиска фаилов и названия получаеш там же
http://www.delphibasics.ru/FindFirst.php
размера файлов - FileSize(FileName);
даты их последнего изменения - http://www.delphibasics.ru/FileAge.php

Отличненько! Спасибо!
MeTeOpA вне форума Ответить с цитированием
Старый 02.03.2011, 15:01   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Хеши, главное — хеши!
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 02.03.2011, 16:05   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Obey-Kun
Хеши, главное — хеши!
э нет, коллега. Не в данном случае!
Цитата:
содержимое файлов сравнивать не надо,
MeTeOpA, советую Вам делать так - завести какую-нибудь динамическую структуру (да хоть свой связный список, хоть взять готовый (на основе TList или TStringList)
каждый найденный файл проверять на наличие в данном списке. Если нашёлся - то сразу писать о найденном дубликате в контрол вывод (TMemo или TList)
если не нашёлся - просто добавлять его в этот список.
Если не забудете в цикле делать Application.ProcessMessege;
то будет так, как в задании - дубликаты будут появляться сразу, по мере их нахождения...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2011, 16:37   #7
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Вам дал ответ ArtGrek.

1. Чтобы найти дубли, Вам нужен список всех файлов иначе, взяв первый файл, Вы будете искать дубль проходясь по всем папкам и так для каждого файла 1, 2... N-1, N.
2. С помощью FindFirst, FindNext и FindClose создаёте список. Думаю это ArtGrek имел ввиду.
3. Отсортировав полученный список, можно сравнивать соседние имена плюс другие аттрибуты. (ArtGrek Вам подсказал насчёт FileSize и FileAge).
4. При наличии совпадения необходимых аттрибутов делайте всё, что хотите: переименовывайте, удаляёте, заносите в "чёрный список" ...

Не забудьте сказать спасибо ArtGrek. Мне не нужно, я за "Репутацией" не гоняюсь.

P.S. Думаю, можно и в Вашей постановке задачу решить, но сузив сравнение до сравнения двух папок.

Последний раз редактировалось OlegVE; 02.03.2011 в 16:42.
OlegVE вне форума Ответить с цитированием
Старый 02.03.2011, 17:07   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
Отсортировав полученный список, можно сравнивать соседние имена
а можно с первого прохода дубликат вычислить
Код:
if aStringList.IndexOf('....') <> -1  then
//значит это дубликат, какая строка уже есть
_SERGEYX_ вне форума Ответить с цитированием
Старый 02.03.2011, 17:08   #9
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
э нет, коллега. Не в данном случае!
Почему?? Сравнивать файлы по хешу -- по идее, наиболее трушный вариант.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 02.03.2011, 17:11   #10
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Конечно, сравнивать файлы по дате изменения это идиотизм.
Если совпадают хеш-сумма файла и его имя, то файлы можно считать полностью идентичными. Какая разница когда он изменен...
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обьединение одинаковых файлов ексель Alex47 Microsoft Office Excel 9 09.02.2011 11:33
Поиск одинаковых чисел bvden Microsoft Office Excel 3 05.07.2009 01:29
Поиск одинаковых элементов Expected } Общие вопросы C/C++ 0 08.01.2009 15:54
Поиск файлов на диске C# Лубышев Помощь студентам 2 23.09.2008 11:18
Браузер файлов на диске parampampam Фриланс 6 03.02.2008 20:48