| 
| 
 | Вопрос # 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.
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |