|
Вопрос # 3 137/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Помогите решить задачу:
Сканирование через определенный промежуток времени несколько директорий (по очереди) с целью мониторинга изменений их содержимого, определение самих файловых изменений (добавление, удаление, переименование, атрибуты, размер и т.д.) для последующей обработки каждого изменившегося файла.
 |
Вопрос задал: ник (статус: Посетитель)
Вопрос отправлен: 29 августа 2009, 22:49
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Короче, всё уже придумано до нас.
Качай и ставь пакет компонентов RxLib. В нём есть компонент TRxFolderMonitor. Вот цитата из хэлпа:
Цитата:
Unit
RxNotify
Description
Компонента TRxFolderMonitor предназначена для отслеживания изменений в каталогах файловой системы, таких как создание, удаление, изменение файлов или каталогов, смена аттрибутов файлов и т.д. Когда происходит одно из изменений, определенных свойством Filter, вызывается событие OnChange.
Компонента использует функции Win 32 API FindFirstChangeNotification, FindCloseChangeNotification и FindNextChangeNotification.
Если хочешь написать что-то своё, обрати внимание на последнее предложение этой цитаты.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 31 августа 2009, 19:38
Оценка за ответ: 4
|
Мини-форум вопроса
Всего сообщений: 13; последнее сообщение — 31 августа 2009, 21:53; участников в обсуждении: 4.
|
min@y™ (статус: Доктор наук), 30 августа 2009, 10:22 [#1]:
А где вопрос-то? Что не получается?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
30 августа 2009, 13:42: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с файловой системой модератором Ерёмин А.А.
|
Amidamaru (статус: 4-ый класс), 31 августа 2009, 18:28 [#2]:
вероятно человек не знает про FindFirst FindNext (ну и FindClose).
|
|
ник (статус: Посетитель), 31 августа 2009, 19:18 [#3]:
[А где вопрос-то? Что не получается?]
А вопросов я еще и не задавал. Если вы заметили, я попросил помочь в решении задачи: Как на ваш взгляд это может выглядеть как внешне, так и изнутри? Чем запасаться для постройки проекта?. С чего начать? Какие механизмы принять за основу и т.д.?
|
|
ник (статус: Посетитель), 31 августа 2009, 19:31 [#4]:
[вероятно человек не знает про FindFirst FindNext (ну и FindClose).]
Спасибо за обширный и емкий ответ. Теперь буду знать.
(я пришел на Ваш сайт не в берюльки играть, а реально обтереть очень нужную тему, а если кто решил ни-за-что обидить гостя, типа "вероятно человек не знает" скажу, что мы тут уже давно не с сосками бегаем!)
|
|
Вадим К (статус: Академик), 31 августа 2009, 19:34 [#5]:
у... это слишком громадный вопрос получается.
Если уж так, то сядьте и на листике ручкой или карандашиком(да, да да, я не описАлся!!!) набросайте интерфейс, взаимодейстие, блок схемы.
Потом надо садиться и начинать писать. Да, перестать бояться и начать писать. И тут как раз возникнут вопросы поконкретнее. и мы уже сможем ответить на них (надеюсь).
Да, возможно первые версий пять придется выбросить, переписать заново, но такова она жизнь. Конечно, можете сказать, я не хочу переписывать пять раз, я сюда как раз за тем и пришел, что бы этого не делать. А вот не получиться, пока самостоятельно шишки не заработаете, ничего не получиться. Даже у самых лучших учителей в мире.
Почему? потому что человек имеет интересную особенность "всё равно делать, как ему кажется верным".
Так вот. Первый совет. начните писать, прямо сейчас.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 31 августа 2009, 20:07 [#6]:
Цитата:
Оценка за ответ: 4
Чем мой ответ тебя не устраивает? Где пояснение?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ник (статус: Посетитель), 31 августа 2009, 20:08 [#7]:
[Короче, всё уже придумано до нас.
Качай и ставь пакет компонентов RxLib. В нём есть компонент TRxFolderMonitor. Вот цитата из хэлпа:]
Хароший ответ! Уже применял - нотификация для этой цели не катит. Нет надежности. Есть событие, есть уведимлеение, нет события - нет уведомление. Красиво! А електричество хлыпнуло, а завис комп или еще масса всего - вот и профукал серию нотификацый, а значит - грош цена (бирюльки!). Нужно периодическое сканирование папки. Но умное, професиональное.
|
|
Вадим К (статус: Академик), 31 августа 2009, 20:17 [#8]:
бесперебойник надо ставить, а не "профессиональное сканирование думать".
Хотя кто мешает использовать выше указанные FindFirst FindNext плюс список файлов с их атрибутами (что бы было с чем сравнивать) и наверно один тред. и всё.
Но против выключения света только бесперебойник нормально помочь может.
Против глупого юзера только морг.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Amidamaru (статус: 4-ый класс), 31 августа 2009, 20:24 [#9]:
Ну тогда вам нужно залазить в дебри Win API и обрабатывать интерфейсы, которые за всё это отвечают.
|
|
min@y™ (статус: Доктор наук), 31 августа 2009, 20:25 [#10]:
Хорошо, чёрт возьми, можно хранить последнее состояние папки с файлами на харде! При правильном подходе вероятность утери это мегаважной для тебя информации будет стремиться к нулю. Да, я даже могу всё это написать, вротмненоги!
Готов изучить твоё задание и выслушать условия сделки.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
ник (статус: Посетитель), 31 августа 2009, 20:29 [#11]:
Использовать выше указанные FindFirst FindNext слишком ресурсоемко. А если использовать к примеру два FileListBox или что-то похожее , которое само следит за изменениями файлов и потом сравнивает с предидущим состоянием?
|
|
min@y™ (статус: Доктор наук), 31 августа 2009, 20:55 [#12]:
Цитата (ник):
А если использовать к примеру два FileListBox или что-то похожее , которое само следит за изменениями файлов и потом сравнивает с предидущим состоянием?
КОНГЕНИАЛЬНО!
Нобелевская премия у тебя в кармане! ))
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 31 августа 2009, 21:53 [#13]:
to Anatoliy
Да, разочорую, FileListBox использует FindFirst и "партнеров". Так что это так называемый "индусский подход".
И при этом кто то пишет "скажу, что мы тут уже давно не с сосками бегаем!"... да...
Но RxLib я всё таки не советовал, их официально не поддерживают, а то что было, интегрировалось с jvcl.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|