![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 08.07.2009
Сообщений: 246
|
![]()
Здравствуйте!!!
Вот возникла такая проблема. необходимо чтобы программа на делфи периодически проводила проверку пришел файл (появился в определенной папки) или нет. проблема в том чтобы это не мешала работать оператору в программе, файлов множество. И вообще возможно такое или нет? Заранее спасибо, как и за совет, так и за код программы.
Да прибудет с Вами свет и радость!!!
![]() Последний раз редактировалось S_Yevgeniy; 20.08.2009 в 18:10. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
многозадачный=многопоточный
дельфийская реализация это класс TThread(New...=>New Thread Object(или class)) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 20.08.2009 в 17:40. |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
2) для проверки появления файла в определённой папке лучше воспользоваться возможностью операционной системы оповещать программу об изменениях в файловой системе - результат поиска на Гугле |
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
FindFirstChangeNotification или ReadDirectoryChangesW [New - Windows NT]
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 08.07.2009
Сообщений: 246
|
![]()
Не понятно, почему вы все не рекомендуете пользоваться многозадачностью?
Или можно объяснить идею ваших предложений?
Да прибудет с Вами свет и радость!!!
![]() Последний раз редактировалось S_Yevgeniy; 21.08.2009 в 13:07. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
S_Yevgeniy, если Вы в магазин собираетесь, чтобы купить пакет молока, заказываете грузчика и грузовую газель с водителем?..
можете сделать с многопоточностью. но, по сравнению с вариантом с таймером напишете раз в десять больше кода, обеспечите синхронизацию основной программы и потока, защитите VCL компоненты от проблем одновременного доступа, разработаете механизм запуска (и, возможно, остановки потока) и т.д. и всё равно, если Вы в потоке будете в цикле НЕПРЕРЫВНО проверять наличие файла - Ваша основная программа (как впрочем и весь компьютер) встанут колом! Значит либо в цикле делать паузы, либо пользоваться таймером в отдельном потоке. Да и вообще, в данном случае использование многопоточности принесёт Вам только вред. Вам надо: Или, по простому, просто использовать таймер (вешаете на него процедуру и всё. Она выполняется независимо от работы основного приложения!) либо (я бы рекомендовал!) использовать WinAPI (функции ReadDirectoryChangesW или FindFirstChangeNotification). точка. |
![]() |
![]() |
![]() |
#8 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
Я уже с таким столкнулся когда писал монитор изменения файлов в сети.
I'm learning to live...
Последний раз редактировалось Stilet; 21.08.2009 в 13:33. |
||
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 08.07.2009
Сообщений: 246
|
![]()
Здравствуйте!!!
Здесь вы пишете что можно воспользоваться таймером а можно подробнее. Вот например нужно проверять появился ли файл через каждые 5 секунд как это осуществить. Причем начинать проверку после 5 секунд от запроса. И что будет с программой пока таймер считает она будет ждать ответа или как? Спасибо!!!
Да прибудет с Вами свет и радость!!!
![]() |
![]() |
![]() |
![]() |
#10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Вот пример с таймером:
Код:
Будет практически тоже самое.
I'm learning to live...
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вывести время работы приложения | razzmatazz | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 23.03.2009 00:17 |
Помогите выбрать режим работы клиент сервер | tarakan1983 | Помощь студентам | 4 | 24.10.2008 12:31 |
двухканальный режим работы | photozaz | Компьютерное железо | 2 | 13.10.2008 00:05 |
Как узнать создана ли форма во время работы приложения? | Avalonix | Общие вопросы Delphi | 4 | 31.05.2008 21:01 |
Скрытие главной формы во время работы приложения | Gorin | Общие вопросы Delphi | 7 | 23.08.2007 19:44 |