Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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™

min@y™ (статус: Доктор наук), 30 августа 2009, 10:22 [#1]:

А где вопрос-то? Что не получается?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

30 августа 2009, 13:42: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с файловой системой модератором Ерёмин А.А.

Amidamaru

Amidamaru (статус: 4-ый класс), 31 августа 2009, 18:28 [#2]:

вероятно человек не знает про FindFirst FindNext (ну и FindClose).
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
ник

ник (статус: Посетитель), 31 августа 2009, 19:18 [#3]:

[А где вопрос-то? Что не получается?]
А вопросов я еще и не задавал. Если вы заметили, я попросил помочь в решении задачи: Как на ваш взгляд это может выглядеть как внешне, так и изнутри? Чем запасаться для постройки проекта?. С чего начать? Какие механизмы принять за основу и т.д.?
ник

ник (статус: Посетитель), 31 августа 2009, 19:31 [#4]:

[вероятно человек не знает про FindFirst FindNext (ну и FindClose).]

Спасибо за обширный и емкий ответ. Теперь буду знать.
(я пришел на Ваш сайт не в берюльки играть, а реально обтереть очень нужную тему, а если кто решил ни-за-что обидить гостя, типа "вероятно человек не знает" скажу, что мы тут уже давно не с сосками бегаем!)
Вадим К

Вадим К (статус: Академик), 31 августа 2009, 19:34 [#5]:

у... это слишком громадный вопрос получается.
Если уж так, то сядьте и на листике ручкой или карандашиком(да, да да, я не описАлся!!!) набросайте интерфейс, взаимодейстие, блок схемы.
Потом надо садиться и начинать писать. Да, перестать бояться и начать писать. И тут как раз возникнут вопросы поконкретнее. и мы уже сможем ответить на них (надеюсь).
Да, возможно первые версий пять придется выбросить, переписать заново, но такова она жизнь. Конечно, можете сказать, я не хочу переписывать пять раз, я сюда как раз за тем и пришел, что бы этого не делать. А вот не получиться, пока самостоятельно шишки не заработаете, ничего не получиться. Даже у самых лучших учителей в мире.
Почему? потому что человек имеет интересную особенность "всё равно делать, как ему кажется верным".
Так вот. Первый совет. начните писать, прямо сейчас.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

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

Amidamaru (статус: 4-ый класс), 31 августа 2009, 20:24 [#9]:

Ну тогда вам нужно залазить в дебри Win API и обрабатывать интерфейсы, которые за всё это отвечают.
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
min@y™

min@y™ (статус: Доктор наук), 31 августа 2009, 20:25 [#10]:

Хорошо, чёрт возьми, можно хранить последнее состояние папки с файлами на харде! При правильном подходе вероятность утери это мегаважной для тебя информации будет стремиться к нулю. Да, я даже могу всё это написать, вротмненоги!

Готов изучить твоё задание и выслушать условия сделки.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ник

ник (статус: Посетитель), 31 августа 2009, 20:29 [#11]:

Использовать выше указанные FindFirst FindNext слишком ресурсоемко. А если использовать к примеру два FileListBox или что-то похожее , которое само следит за изменениями файлов и потом сравнивает с предидущим состоянием?
min@y™

min@y™ (статус: Доктор наук), 31 августа 2009, 20:55 [#12]:

Цитата (ник):


А если использовать к примеру два FileListBox или что-то похожее , которое само следит за изменениями файлов и потом сравнивает с предидущим состоянием?


КОНГЕНИАЛЬНО!
Нобелевская премия у тебя в кармане! :)))
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 31 августа 2009, 21:53 [#13]:

to Anatoliy
Да, разочорую, FileListBox использует FindFirst и "партнеров". Так что это так называемый "индусский подход".
И при этом кто то пишет "скажу, что мы тут уже давно не с сосками бегаем!"... да...

Но RxLib я всё таки не советовал, их официально не поддерживают, а то что было, интегрировалось с jvcl.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.03 сек.