Мое приложение содержит документы в своей базе данных. Пользователи могут открывать документы, и в этом случае документ сохраняется во временной папке и открывается на компьютере пользователя.
Я хотел бы получить уведомление об изменении одного из этих временных файлов и предложить пользователю сохранить измененный документ обратно в базу данных.
Какой самый простой способ сделать это в Delphi7? (Полагаю, для этого требуется некоторая магия оболочки или сторонний компонент)
Спасибо!
Вы можете:
использовать функцию Win32 API SHChangeNotifyRegister для отслеживания изменений во временной папке, а затем проверить обратный вызов, сообщают ли ваши временные файлы изменения.
, поскольку вы точно знаете интересующий вас файл (ы), вы можете вручную отслеживать их непосредственно на предмет изменений их размеров и временных меток, используя FindFirstFile в таймере или потоке.
Вы можете обнаружить изменения в ваших временных файлах (или любом файле) с помощью компонента TJvChangeNotify
из коллекции JEDI JVCL .
В дополнение к тому, что RRuz и Реми Лебо написали:
Обратите внимание, что TJvChangeNotify
в модуле JvChangeNotify
использует вызов API FindFirstChangeNotification
; это документация MSDN. Обратите внимание, что это немного противоречит интуиции: см. Упомянутый ниже поток о том, как использовать его внутри цикла while.
Существует также вызов API ReadDirectoryChanges
, который не заключен в оболочку JCL / JVCL , и имеет документацию MSDN здесь и есть ] Также пример Delphi win32 .
В этой ветке объясняются различия между двумя вызовами API.
- Джерун