|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Слежение за папкой
Стоит такая задача:
Есть папка в которую попадают файлы, надо мониторить папку и при попадании нового файла грузить его в оракл. Вот и вопрос: как мониторить папку? использование таймеров мне явно не подходит, как отследить событие попадания файлов в папку? и вообще как правильно организовывать такие системы? поделитесь опытом Последний раз редактировалось Admin, Сегодня в 10:32. |
#2
|
||||
|
||||
Есть несколько решений, вот например нарыл на просторах инета:
Код:
type PFileNotifyInformation = ^TFileNotifyInformation; TFileNotifyInformation = record NextEntryOffset: DWORD; Action: DWORD; FileNameLength: DWORD; FileName: array [0..MAX_PATH - 1] of WideChar; end; .... procedure TForm1.Test; const Filter = FILE_NOTIFY_CHANGE_FILE_NAME or FILE_NOTIFY_CHANGE_DIR_NAME or FILE_NOTIFY_CHANGE_ATTRIBUTES or FILE_NOTIFY_CHANGE_SIZE or FILE_NOTIFY_CHANGE_LAST_WRITE or FILE_NOTIFY_CHANGE_LAST_ACCESS or FILE_NOTIFY_CHANGE_CREATION or FILE_NOTIFY_CHANGE_SECURITY; var Dir: THandle; Notify: TFileNotifyInformation; BytesReturned: DWORD; begin Dir := CreateFile('d:\', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); if Dir <> INVALID_HANDLE_VALUE then try if not ReadDirectoryChangesW(Dir, @Notify, SizeOf(TFileNotifyInformation), False, Filter, @BytesReturned, nil, nil) then raise Exception.Create(SysErrorMessage(GetLastError)) else case Notify.Action of FILE_ACTION_ADDED: Memo1.Lines.Add('New file' + Notify.FileName); FILE_ACTION_REMOVED: Memo1.Lines.Add('Delete file' + Notify.FileName); FILE_ACTION_MODIFIED: Memo1.Lines.Add('Modify file' + Notify.FileName); FILE_ACTION_RENAMED_OLD_NAME: Memo1.Lines.Add('Old Name file' + Notify.FileName); FILE_ACTION_RENAMED_NEW_NAME: Memo1.Lines.Add('New Name file' + Notify.FileName); end; finally CloseHandle(Dir); end; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |