Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть код с использыванием потоков, Как потоки заменить на таймер? 
:(
    Опции темы
Kusik
Дата 13.12.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



вот поискал на ветке форума код с ипользованием FindFirstChangeNotification для определения изменения файлов. там пример с использованием потоков, но я с потоками не работал и не знаю как. можно ли это сделать в таймере? и как? или можете дать полный исходник того примера?
знаю, что таймер это плохо, но с потоками не имел возможности работать и не знаю как.
PM MAIL ICQ   Вверх
Romikgy
Дата 13.12.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Имхо можно и в таймере , и чем
Цитата(Kusik @ 13.12.2005, 14:55)
знаю, что таймер это плохо

не понимаю?
Вставь код из потока в обработчик таймера smile



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kusik
Дата 13.12.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



там появляются ошибки, например код:
Код

var DirName : string;
procedure TSimpleThread.Execute;
var r: Cardinal;
fn : THandle;
begin
fn := FindFirstChangeNotification(pChar(DirName),
True,FILE_NOTIFY_CHANGE_FILE_NAME);
repeat r := WaitForSingleObject(fn,2000);
if r = WAIT_OBJECT_0 then Forml.UpdateList;
if not FindNextChangeNotification (fn) then break;
until [size=2]Terminated;[/size]
FindCloseChangeNotification(fn);
end;

вот это слово "Terminated" к чему оно относится к потоку или приложению?
PM MAIL ICQ   Вверх
Romikgy
Дата 13.12.2005, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Kusik @ 13.12.2005, 15:33)
вот это слово "Terminated" к чему оно относится к потоку или приложению?

К потоку.



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 13.12.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Лучше оставить эту проверку в потоке.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kusik
Дата 13.12.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



ну так если не использовать поток, а только таймер, какое условие нужно вставлять в блок until <...>, если потоков то нету?
PM MAIL ICQ   Вверх
Romikgy
Дата 13.12.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



У тя будет вот эта ф-ция
Цитата(Kusik @ 13.12.2005, 15:33)
r := WaitForSingleObject(fn,2000);
вешать приложение намертво в течении 2 сек, потом выполнятся действия далее этой ф-ции, и снова по таймеру в висяк, т.е. с твоим приложением нельзя будет нормально работать, для этого эту обработку вынесли в отдельный поток, давай лучше будем юзать поток, если че не понятно поможем, с ним разобратся smile



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kusik
Дата 13.12.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



хорошо, поток так поток,
я просто их ни разу не создавал но немного их использовал (только под с++билдером).
а задача такая: на удаленном компе есть папка, в ней хрянятся файлы текстовые с забитыми параметрами типа (дата время и инфа). нужно чтобы прога крутилась все время (те. по автозапуску) и считывала список файлов и с них инфу, вести типа счетчика, отслеживать изменение файлов, а так же их удаление. короче прога типа монитора. причем названия файлов я не могу знать явно, т.е. только определять программно (FindFirst, FindNext, FindClose)
из прошлого опыта использования таймеров, убедился, что любой комп можно повесить, а вот на счет потоков это нормальная идея, но не свосем, т.к. нужно правльно ими управлять и чтобы они не наклыдывались друг на друга.
как для такой задачи мне создать поток и какое количество?
например если колво файлов не может быть больше 10, можно, допустим создать 10 потоков?
и еще тут наверное прийдеться использовать динамические массивы?!
PM MAIL ICQ   Вверх
Romikgy
Дата 14.12.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Имхо ты сильно усложняешь проблемму smile
Где будет находится твоя следящая прога?

Цитата(Kusik @ 13.12.2005, 18:02)
, что любой комп можно повесить
Комп можно повесить и не только в тапймере smile


Цитата(Kusik @ 13.12.2005, 18:02)
нужно правльно ими управлять и чтобы они не наклыдывались друг на друга
Управлять потоком довольно просто, а накладываться потоки друг на друга не могут, а вот сихронизация данных от разных потоков да.

Цитата(Kusik @ 13.12.2005, 18:02)
например если колво файлов не может быть больше 10
Имхо хватит одного потока, все что ты описал можно сделать и без сабжа, используя

Цитата(Kusik @ 13.12.2005, 18:02)
FindFirst, FindNext, FindClose
, также можно обойтись (если я правильно понял задачу) и таймером, по пунктам
1 с помощью файндов создаешь список файлов в нужной дериктории
2 читаешь из них инфу
3 удаляешь ненужные
все эти ф-ции выполняются в теле таймера, список файлов можна хранить в TStingList для сравнения с предыдущим считыванием каталога



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kusik
Дата 14.12.2005, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



на счет последнего, т.е. удалять н нужные, мне не надо, это прога тока мониторит ыфайлы но ни в коем случает не убивает/изменяет их. просто конроллирует инфу.
а также, эта прога может быть запущена не тока на одном компе а напрмер на нескольких.
PM MAIL ICQ   Вверх
Демо
Дата 14.12.2005, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Kusik

Цель твоей программы какая? Просто реагировать на изменение фалов в каталоге или получать имена изменных файлов?

По поводу мониториг\нга можешь здесь посмотреть:
http://www.delphimaster.ru/articles/panov/index.html


--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.6743 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.