Delphi-уведомление при обновлении файла

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

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

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

Спасибо!

7
задан RRUZ 24 April 2011 в 18:27
поделиться

3 ответа

Вы можете:

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

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

6
ответ дан 6 December 2019 в 09:17
поделиться

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

8
ответ дан 6 December 2019 в 09:17
поделиться

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

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

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

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

- Джерун

4
ответ дан 6 December 2019 в 09:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: