![]() |
|
#1
|
||||
|
||||
![]() Собственно как создать неизвестное количество таймеров
... TimerPool : array of TTimer; ... TimerPool[1] := TTimer.Create(Self); TimerPool[1] .Interval := 500; TimerPool[1].OnTimer := .... TimerPool[1].Enabled := True; так собственно будут не зависимые друг от друга таймеры создаваться |
#2
|
||||
|
||||
![]() Код:
procedure TForm1.myproc(Sender: TObject); begin // твои действия... можно работать с таймером (если надо): TTimer(Sender).Tag, Interval, Enabled... end; procedure TForm1.FormCreate(Sender: TObject); var x: array of TTimer; len, i: integer; begin len:=0; setlength(x, len+1); // 1 таймер создаем for i:=0 to len do begin x[i] := TTimer.Create(self); x[i].Interval := 1000; x[i].OnTimer := myproc; x[i].Enabled := True; end; end; Помогаю за Спасибо ![]() |
#3
|
||||
|
||||
![]() Код:
rocedure TForm1.FormCreate(Sender: TObject); var x: array of TTimer; len, i: integer; begin len:=0; setlength(x, len+1); x[len] := TTimer.Create(self); x[len].Interval := 1000; x[len].OnTimer := myproc; x[len].Enabled := True; end; end; Спасибо, у меня по процедуре будет создаваться таймер а не определенное чилсло таймеров сразу так что вроде так да и как мне в procedure TForm1.myproc(Sender: TObject); удалить таймер который использует её так скажем TForm1.myproc(Sender: TObject); действия удаляем этот таймер |
#4
|
||||
|
||||
![]() Можно создавать вообще без массива, но вот добираться до нужного таймера будет проблематично:
Код:
with TTimer.Create(Self) do begin Interval := 1000; OnTimer := MyProc; Enabled := True; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() нет не пойдет мне всетаки нужно его убирать будет
|
#6
|
||||
|
||||
![]() Если правильно понял, тебе надо отключить таймер? Или полностью удалить его? Если удалить - будет сложнее, т.к. все таймеры находятся в дин. массиве. Если же просто отключить, то я уже говорил как:
Код:
procedure TForm1.myproc(Sender: TObject); begin ТВОИ ДЕЙСТВИЯ ... TTimer(Sender).Enabled := False; end; Помогаю за Спасибо ![]() |
#7
|
||||
|
||||
![]() мне в принципе без разницы главное чтобы ресурсов не ел и был отключен
Timersend1 это myproc Код:
procedure TForm1.Timersend1(Sender: TObject); var parelelPK1: TstringList; CR1: boolean; shet1,conec1: integer; UIN,Msg: string; begin if CR1 then begin parelelPK1:= TstringList.Create; parelelPK1.Assign(PK1); pk1.clear; conec1:=parelelPK1.Count; shet1:=0; CR1:=false; end; UIN:=copy(pk1.strings[shet1],1,pos('=',pk1.strings[shet1])-1); Msg:=copy(pk1.strings[shet1],pos('=',pk1.strings[shet1])+1,length(pk1.strings[shet1])); obrabotchik1(UIN, Msg); shet1:=shet1+1; if shet1>conec1 then TTimer(Sender).Enabled := False; end; меня интересует будет ли для каждого таймера свое тобишь, создался таймер в переменной у него присвоилось parelelPK1.Assign(PK1); и если создастся еще один таймер не присвоется ли к этому таймеру уже новое значение |
#8
|
||||
|
||||
![]() Естественно для каждого таймера процедура можно сказать отдельная.
То бишь, как я уже говорил, пиши TTimer(Sender).Enabled := False, и это отключит только 1 таймер. Помогаю за Спасибо ![]() |
#9
|
||||
|
||||
![]() А зачем вам вообще их создавать в таком количестве? Может вы в принципе неправильный подход к задаче выбрали?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
||||
|
||||
![]() v1s2222 ну да как видите так и делаю, спасибо, таймеров будет много каждый сам себя отрубит потом
Страдалецъ думаю это самый простой, пробовал с потоками вобще муть получилась, да думаю таймеров будет много создаваться, ну если отрубаться будут думаю стабильно будет не загружено, так и должно быть вобщем) Последний раз редактировалось ALexandr555, 03.02.2011 в 20:26. |
#11
|
||||
|
||||
![]() Если у тебя все таймеры работают с одним интервалом?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#12
|
||||
|
||||
![]() они в разное время создаваться будут к томуже не более чем через 2 секнды вырубаться
|
#13
|
||||
|
||||
![]() Я к чему, просто таймеры насколько я помню не создаются в отдельных потоках, поэтому если есть необходимость раскидать некое задание на множество мелких подзадач с индивидуальным таймером, то так не получится.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#14
|
||||
|
||||
![]() нет нет, изначально пробовал решить свою проблемму с помошью потоков, потом пришла идея проще через таймеры
|
#15
|
||||
|
||||
![]() ИМХО - бред. Таймеры будут плодиться, и соответственно, жрать память. Если не получишь stack overflow - то как минимум ресурсам настанет полный 3,1415926535897932384626433832795...пец.
З.Ы. Очередной кулхацкер создаёт очередную ICQ-флудилку? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |