Delphi уведомление при обновлении файла - PullRequest
6 голосов
/ 05 августа 2010

Мое приложение содержит документы в своей базе данных. Пользователи могут открывать документы, в этом случае документ сохраняется во временную папку и открывается на компьютере пользователя.

Я хотел бы получить уведомление об изменении одного из этих временных файлов и предложить пользователю сохранить измененный документ обратно в базу данных.

Какой самый простой способ сделать это в Delphi7? (Я полагаю, что это требует какой-то магической оболочки или стороннего компонента)

Спасибо!

Ответы [ 4 ]

8 голосов
/ 05 августа 2010

Вы можете обнаружить изменения во временных файлах (или любых файлах), используя компонент TJvChangeNotify из коллекции JEDI JVCL .

5 голосов
/ 06 августа 2010

Вы можете либо:

  1. использовать Win32 API SHChangeNotifyRegister , чтобы отслеживать изменения во временной папке, а затем выполнить обратный вызов, чтобы проверить наличие временных файловсообщают об изменениях.

  2. , поскольку вы знаете точные файлы, которые вас интересуют, вы можете вручную отслеживать их непосредственно на предмет изменения их размеров и временных отметок, используя FindFirstFile в таймере или в потоке.

4 голосов
/ 06 августа 2010

В дополнение к тому, что RRuz и Реми Лебо писал:

Обратите внимание, что TJvChangeNotify в блоке JvChangeNotify использует вызов API FindFirstChangeNotification; это - документация MSDN. Обратите внимание, что это немного нелогично: см. Упомянутый ниже поток о том, как использовать его внутри цикла while.

Существует также вызов API ReadDirectoryChanges, который не заключен в JCL / JVCL и содержит документацию MSDN здесь , а также пример Delphi win32 также.

В этой теме объясняются различия между двумя вызовами API.

- Йерун

2 голосов
/ 23 апреля 2011
...