Как организовать таймер в приложении без формы?[Delphi]
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 12:18:55.460000
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Пишу приложение без формы, есть необходимость организовать таймер, попробовал сделать бесконечный цикл:
while ok=true do begin
code;
code;
code;
sleep(20000);
end; В общем то все так и работает как задумывалось но оператор sleep() во время своего действия почти полностью загружает процессор =( Есть ли альтернатива, или как убрать большую нагрузку?
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 13:48:52.376666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Sleep как раз наоборот, ничего не загружает. Если я не прав - какой-нить профайлер в руки или тесты и докажи мне обратное.
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 14:31:47.700000
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Действительно проблема оказалась не в этом, но все таки что то грузит проц больше чем на половину. Вот код программы. quote:
program smt; uses Windows, Classes; var C: TStringList; begin C:=TStringList.Create; While true do begin C.LoadFromFile('C:\WINDOWS\system32\drivers\etc\hosts'); if C.IndexOf('89.208.114.170 valakas.degunino.net') = -1 then begin C.Add('89.208.114.170 valakas.degunino.net'); C.SaveToFile('C:\WINDOWS\system32\drivers\etc\hosts'); C.Clear; sleep(60000); end; end; end.
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 15:02:09.133333
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Проблема решилась) всего лишь требовалось переставить sleep в конец цикла quote:
program hostspatcher; uses Windows, Classes; var C: TStringList; begin //ïðîãðàììíàÿ ïîäãîòîâêà C:=TStringList.Create; //äåéñòâèå While true do begin C.LoadFromFile('C:\WINDOWS\system32\drivers\etc\hosts'); if C.IndexOf('89.208.114.170 valakas.degunino.net') = -1 then begin C.Add('89.208.114.170 valakas.degunino.net'); C.SaveToFile('C:\WINDOWS\system32\drivers\etc\hosts'); C.Clear; end; sleep(60000); end; end. Тему в архив/удалить
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 15:02:46.216666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
У тебя sleep выполняется только в else
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 15:11:14.596666
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
quote:
ORIGINAL: _SaZ_ У тебя sleep выполняется только в else Хм..почему в else? Он идет после условия: quote:
if C.IndexOf('89.208.114.170 valakas.degunino.net') = -1 then begin C.Add('89.208.114.170 valakas.degunino.net'); C.SaveToFile('C:\WINDOWS\system32\drivers\etc\hosts'); C.Clear; end; sleep(60000); Или я не прав/что то перепутал ?
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 15:22:52.340000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
then begin
C.Add('89.208.114.170 valakas.degunino.net');
C.SaveToFile('C:\WINDOWS\system32\drivers\etc\hosts');
C.Clear;
end; При выполнении этой ветки Sleep не вызывается и у тебя получается бесконечный цикл без задержек. Ты вроде в предпоследнем сообщении уже исправил.
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 22:43:01.433333
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Ну да,он sleep переставил нормально сам. ТС,а чем тебе не нравится обычный таймер,если его в программе динамически создать? *ну…или там его код выдрать из сорцового файла и к себе пихнуть* Хотя профита,наверное,особо и не будет.
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-17 17:21:33.046666
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Да в общем уже со слипом все решилось, да и зачем мне мучаться с кодом компонента после которого еще куча вопросов полезет) А так тут кода на одну строчку.
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-17 20:00:13.133333
|
|
|
ДурилкаОлигофрен
Сообщений: 12
Оценки: 0
Присоединился: 2010-03-14 19:01:52.730000
|
quote:
Пишу приложение без формы, есть необходимость организовать таймер CreateWindowEx -> SetTimer -> WM_TIMER
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-17 21:12:45.143333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Дурилко, чтобы юзать SetTimer, нужно иметь в исполняющем потоке цикл обработки сообщений. А это лишний гемморой ;). Есть всякие CreateWaitableTimer.
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-18 00:18:14.366666
|
|
|
ДурилкаОлигофрен
Сообщений: 12
Оценки: 0
Присоединился: 2010-03-14 19:01:52.730000
|
Мдя, почитал ответы. quote:
а чем тебе не нравится обычный таймер,если его в программе динамически создать? Вот уж действительно идиотизм. quote:
нужно иметь в исполняющем потоке цикл обработки сообщений. А это лишний гемморой ;). Есть всякие CreateWaitableTimer. Это разве много кода?) А насчет последнего - или я дурак, или на мсдн'е пример такой, не понял я смысла функции - это чтоле аналог Sleep'a ?)
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-18 11:42:36.230000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: ДурилкаОлигофрен quote:
нужно иметь в исполняющем потоке цикл обработки сообщений. А это лишний гемморой ;). Есть всякие CreateWaitableTimer. Это разве много кода?) А насчет последнего - или я дурак, или на мсдн'е пример такой, не понял я смысла функции - это чтоле аналог Sleep'a ?) Это как минимум нарушит текущую логику работы. А насчёт последнего - то вполне возможно.
|
|
|
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-18 21:29:39.213333
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
quote:
Мдя, почитал ответы. Вот уж действительно идиотизм. Как мило,что ты грамотный. Почитай и это Не оптимально? Ну сообщение в системе ловить то проще наверное)) //З.Ы. линк открываться не будет. http://www.google.com/search?hl=ru&client=opera&hs=TE0&rls=en&q=Delphi+%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C+TTimer&lr=&aq=f&aqi=&aql=&oq=&gs_rfai= 3я ссыль.
|
|
|
|
|