Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.06.2013, 02:39
gatget gatget вне форума
Прохожий
 
Регистрация: 07.06.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию мониторинг текстового файла

ребят, подскажите как в delphi мониторить текстовый файл?, т.е. если добавились какие то данные в файл, то сделать вывод в memo например...
Ответить с цитированием
  #2  
Старый 07.06.2013, 03:43
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Функции для отслеживания изменений содержимого файла FindFirstChangeNotification, FindNextChangeNotification, FindCloseChangeNotification вместе с WaitForSingleObject какие то из них должны помочь, или ещё по таймеру периодически размер *.txt проверять, изменился - вывод в мемо.


З.Ы.

Во, описание функций нашёл в MSDN, перевод, сильно не бейте

Цитата:
FindFirstChangeNotification - функция возвращает дескриптор уведомления об изменениях и устанавливает начальные условия отправки сообщения, или вернёт INVALID_HANDLE_VALUE в случае ошибки:

FindFirstChangeNotification(lpPathName: PChar; bWatchSubtree: boolean; dwNotifyFilter: DWORD): THandle;

lpPathName: PChar - полный путь к директории за которой проводится мониторинг. Этот параметр не должен содержать относительный путь или нулевую строку.
bWatchSubtree: boolean - если true, то указывает на то, что также в результат мониторинга будут попадать изменения и в подпапках.
dwNotifyFilter: DWORD - набор флагов, определяющих настройки фильтра.

Флаги могут быть следующими:
FILE_NOTIFY_CHANGE_FILE_NAME (0x00000001) - любое изменение имени файла в папке или подкаталоге. Изменения включают в себя переименование, создание или удаление файла.

FILE_NOTIFY_CHANGE_DIR_NAME (0x00000002) - любое изменение имени директории в каталоге или подкаталоге. Изменения включают в себя переименование, создание или удаление директории.

FILE_NOTIFY_CHANGE_ATTRIBUTES (0x00000004) - любое изменение атрибутов в просматриваемой директории и поддиректориях.

FILE_NOTIFY_CHANGE_SIZE (0x00000008) - изменение размера файла в директории или подпапке. Изменение видно только когда файл записывается на диск.

FILE_NOTIFY_CHANGE_LAST_WRITE (0x00000010) - изменение времени последней записи в файл.

FILE_NOTIFY_CHANGE_SECURITY (0x00000100) - изменение параметров безопасности в каталоге или подкаталоге.

FindNextChangeNotification - указывает, чтобы операционная система вернула сигнал уведомления об изменении THandle в следующий раз, когда обнаруживаются изменения, согласно фильтру, установленному функцией FindFirstChangeNotification.
FindNextChangeNotification(hChangeHandle: THandle):boolean;
hChangeHandle: THandle - дескриптор, полученный с помощью функции FindFirstChangeNotification.

FindCloseChangeNotification - останавливает мониторинг изменений в директории.
FindCloseChangeNotification(hChangeHandle: THandle):boolean;
hChangeHandle: THandle - дескриптор, полученный с помощью функции FindFirstChangeNotification.
Вместо директорий можно следить и за конкретными файлами, всё дело лишь во флагах.

Последний раз редактировалось Alegun, 07.06.2013 в 04:46.
Ответить с цитированием
  #3  
Старый 07.06.2013, 08:49
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

компонент TShellChangeNotifier на вкладке Samples
исходник: "c:\Program Files\Borland\Delphi7\Demos\ShellControls\ShellCtr ls.pas"
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Tonyy (18.09.2013)
  #4  
Старый 09.06.2013, 22:31
gatget gatget вне форума
Прохожий
 
Регистрация: 07.06.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

а готового примера нету?)
Ответить с цитированием
  #5  
Старый 10.06.2013, 00:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от gatget
а готового примера нету?)

а чем тебя не устраивает просто по таймеру проверять размер файла и дату его модификации?
Ответить с цитированием
  #6  
Старый 10.06.2013, 09:28
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от gatget
а готового примера нету?)
в Root задай папку, в OnChange обработчик, в NotifyFilters выбери нужные события.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 10.06.2013, 11:56
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Вот тут довольно подробно все расписано.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
Tonyy (14.09.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:11.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter