Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Как организовать таймер в приложении без формы?[Delphi]

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Как организовать таймер в приложении без формы?[Delphi]
Имя
Сообщение << Старые топики   Новые топики >>
Как организовать таймер в приложении без формы?[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() во время своего действия почти полностью загружает процессор =(
Есть ли альтернатива, или как убрать большую нагрузку?
Post #: 1
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 13:48:52.376666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Sleep как раз наоборот, ничего не загружает.

Если я не прав - какой-нить профайлер в руки или тесты и докажи мне обратное.
Post #: 2
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.

Post #: 3
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.


Тему в архив/удалить
Post #: 4
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 15:02:46.216666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
У тебя sleep выполняется только в else
Post #: 5
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);

Или я не прав/что то перепутал ?
Post #: 6
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 не вызывается и у тебя получается бесконечный цикл без задержек. Ты вроде в предпоследнем сообщении уже исправил.
Post #: 7
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-16 22:43:01.433333   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Ну да,он sleep переставил нормально сам.
ТС,а чем тебе не нравится обычный таймер,если его в программе динамически создать? *ну…или там его код выдрать из сорцового файла и к себе пихнуть* Хотя профита,наверное,особо и не будет.
Post #: 8
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-17 17:21:33.046666   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Да в общем уже со слипом все решилось, да и зачем мне мучаться с кодом компонента после которого еще куча вопросов полезет) А так тут кода на одну строчку.
Post #: 9
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-17 20:00:13.133333   
ДурилкаОлигофрен

Сообщений: 12
Оценки: 0
Присоединился: 2010-03-14 19:01:52.730000
quote:

Пишу приложение без формы, есть необходимость организовать таймер

CreateWindowEx -&gt; SetTimer -&gt; WM_TIMER
Post #: 10
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-17 21:12:45.143333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Дурилко, чтобы юзать SetTimer, нужно иметь в исполняющем потоке цикл обработки сообщений. А это лишний гемморой ;). Есть всякие CreateWaitableTimer.
Post #: 11
RE: Как организовать таймер в приложении без формы?[Delphi] - 2010-03-18 00:18:14.366666   
ДурилкаОлигофрен

Сообщений: 12
Оценки: 0
Присоединился: 2010-03-14 19:01:52.730000
Мдя, почитал ответы.
quote:

а чем тебе не нравится обычный таймер,если его в программе динамически создать?

Вот уж действительно идиотизм.

quote:

нужно иметь в исполняющем потоке цикл обработки сообщений. А это лишний гемморой ;). Есть всякие CreateWaitableTimer.

Это разве много кода?)
А насчет последнего - или я дурак, или на мсдн'е пример такой, не понял я смысла функции - это чтоле аналог Sleep'a ?)
Post #: 12
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 ?)

Это как минимум нарушит текущую логику работы.

А насчёт последнего - то вполне возможно.
Post #: 13
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я ссыль.
Post #: 14
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Как организовать таймер в приложении без формы?[Delphi]







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.