Какой самый простой способ отслеживать изменения в одном файле?
Должен ли я смотреть на уведомления оболочки? Есть ли хороший бесплатный компонент или пример исходного кода?
Или я должен просто запустить таймер на одну секунду и периодически проверять временную метку файла?
Это не должно быть элегантно, просто самое простое, что будет работать. Меня больше интересует обработка, которую я буду выполнять при изменении файла (это файл журнала, при каждом его обновлении я хочу проанализировать его и показать некоторые детали запуска теста).
4 ответа
Уведомления оболочки хороши, но сложнее, чем таймер. Если интервал опроса в одну секунду достаточно хорош, вы можете использовать это.
Но вы можете создать "Монитор" самостоятельно, который инкапсулирует фактический код мониторинга. Этот монитор вызывает событие, если файл изменяется. Этот ваш монитор может сначала инкапсулировать таймер (простая, двухминутная работа), но может быть изменен для использования уведомлений оболочки позже (лучше), без необходимости изменять всю логику вашего приложения.
Я думаю, что вы можете использовать функцию ReadDirectoryChangesW.
И, возможно, этот вопрос / ответы могут помочь вам в разборе вашего файла журнала.
Джедай VCL наследует уведомление об изменении / папку-монитор от RxLib.
RxLib также может быть доступен для более старых версий Delphi
Кстати, вы не указали свою версию Delphi. Пожалуйста, нажмите на ссылку RETAG и добавьте соответствующий тег.
Вы можете использовать компоненты оболочки Delphi здесь учебник