Вопрос № 147298: Здравствуйте ув. Экспреты. Как сделать так, что бы происходила проверка папки через интервал времени и если появлялся новый файл выдавать сообщение? Заранее спасибо...Вопрос № 147336: Здраствуйте уважаемые эксперты. Как сделать в делфи отправку каких либо данных на какой либо ip адрес и порт??? Хочу в этом разобраться и написать небольшую программку флудилку....
Вопрос № 147.298
Здравствуйте ув. Экспреты. Как сделать так, что бы происходила проверка папки через интервал времени и если появлялся новый файл выдавать сообщение? Заранее спасибо
Отвечает: Шичко Игорь
Здравствуйте, Пустовойтенко Виктор Григорьев! Предложу Вам следующий алгоритм решения задачи: 1. Создать на форме два компоненита, например Memo1 и Memo2. При этом Memo2 будет использоваться для хранения эталонного набора, Memo1 - для хранения новых файлов 2. Добавить компонент TTimer, установить ему нужный период срабатывания. 3. По событию FormActivate загружать в Memo2 список файлов. 4. По событию OnTimer загружать в Memo1 новый список файлов. Поочередно перебрав строки Memo1 и сравнив
каждую из них со списком Memo2 удалить те, которые сравнились. Останутся только новые. Процедура загрузки имен файлов в Memo - в приложении. Пример использования: FindFiles(dir_, '*.xls', Memo1.Lines, true); Для наглядности можно Memo2 сделать невидимым.
Приложение:
Ответ отправил: Шичко Игорь (статус: 10-ый класс)
Ответ отправлен: 15.10.2008, 16:42
Отвечает: Bochvarov NikB
Здравствуйте, Пустовойтенко Виктор Григорьев! Посмотрите ето: function ReadDirectoryChanges; external kernel32 name 'ReadDirectoryChangesW';
Ответ отправил: Bochvarov NikB (статус: 10-ый класс)
Ответ отправлен: 15.10.2008, 16:42
Отвечает: Genia007
Здравствуйте, Пустовойтенко Виктор Григорьев! Накидал такую вот процедуру, работает по таймеру, считает количество файлов.
Приложение:
Ответ отправил: Genia007 (статус: 9-ый класс)
Ответ отправлен: 15.10.2008, 17:34 Оценка за ответ: 4 Комментарий оценки: Но так я не узнаю, какой именно файл появился
Отвечает: PavelGM
Здравствуйте, Пустовойтенко Виктор Григорьев!
Еще вариант без таймеров (как советует Микрософт - MSDN) - система сама уведомит об изменениях: 1. FindFirstChangeNotification c FILE_NOTIFY_CHANGE_FILE_NAME 2. потом в цикле WaitForSingleObject по полученному хэндлу 3. считываете список файлов и поиск нового - сообщение 4. и FindNextChangeNotification для продолжения отслеживания. 5. ну и при выходе FindCloseChangeNotification для снятия отслеживания
Если у вас не только эта задача,
то лучше это делать в отдельном потоке, а родительскому посылать уведомления (сообщением) о найденных изменениях.
P.S. также можно отслеживать появление папок, появление файлов в подпапках и т.п. см. справку по FindFirstChangeNotification
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 16.10.2008, 00:12 Оценка за ответ: 4 Комментарий оценки: Канешна умно написано, но я ничего не понял. Что значит, потом в цикле WaitForSingleObject по полученному хэндлу? First, Next, Close я еще представляю как работает, так как работал с базами данных или это не так? Если бы можно было поподробнее, а ещё лучше маленький примерчик
Вопрос № 147.336
Здраствуйте уважаемые эксперты. Как сделать в делфи отправку каких либо данных на какой либо ip адрес и порт??? Хочу в этом разобраться и написать небольшую программку флудилку.
Отвечает: Овчинников Николай Владиславов
Здравствуйте, Журавлёв Юрий! Посмотрите здесь может и поможет www.elacerta.narod.ru Сразу на главной странице одна ссылка на файл там программа и описание