Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

Timer   Найти похожие ветки 

 
Anatoly P   (2003-10-15 19:35) [0]

Есть массив динамически созданных таймеров, на .OnTimer хочу уничтожить, как правильно это сделать (пробовал .Free, .Destroy)?


 
Юрий Федоров ©   (2003-10-15 19:44) [1]

уничтожить кого ?
PS
Free от Destroy отличается только тем, что в Free производится проверка на nil (см. реализацию в System.pas)


 
Palladin ©   (2003-10-15 19:44) [2]

А что говорит по этому поводу справка?


 
Anatoly P   (2003-10-15 19:46) [3]

Уничтожить себя после выполнения возложенной задачи


 
Rouse_ ©   (2003-10-15 19:47) [4]

А что нужно удалить то? Таймер из массива или массив?

Желаю успехов

ЗЫ: > (пробовал .Free, .Destroy) - И не получается?


 
Anatoly P   (2003-10-15 19:50) [5]

Уничтожить таймер после того как он выполнил .OnTimer


 
Rouse_ ©   (2003-10-15 19:51) [6]

> Уничтожить себя после выполнения возложенной задачи :))
Терминатор - 4 блин, не в обиду :))

ЗЫ: Сори за оффтопик


 
Anatoly P   (2003-10-15 19:53) [7]

Ну одноразовый :)


 
Кулюкин Олег ©   (2003-10-15 19:54) [8]

Из обработчика события лучше не уничтожать объект, которому это событие принадлежит.
Посылайте форме сообщение, пусть она уничтожает таймеры.

А что за надобность пладить массив таймеров?
Сдается мне, криво это как-то.


 
Anatoly P   (2003-10-15 19:56) [9]

По-другому не получается, вернее криво получается, пока пытаюсь так.


 
Rouse_ ©   (2003-10-15 19:59) [10]

Сделай таймеры на апи, хоть чуток и посложнее, однако никакой проблемы с множеством экземплятов класса и с их уничтожением не будет.

Желаю успехов


 
Кулюкин Олег ©   (2003-10-15 19:59) [11]

Тогда пусть убивает форма, или иной объект, который может принимать сообщения.


 
Кулюкин Олег ©   (2003-10-15 20:00) [12]


> Сделай таймеры на апи, хоть чуток и посложнее, однако никакой
> проблемы с множеством экземплятов класса и с их уничтожением
> не будет.

А еще лучше, потоки.
Которые сами себы будут уничтожать
см. TThread.FreeOnTerminate


 
Юрий Зотов ©   (2003-10-15 20:02) [13]

Удобнее использовать не массив, а TObjectList - тогда таймер и уничтожается и удаляется из списка, причем как бы "автоматически".

var
Timers: TObjectList;

procedure TForm1.AllTimersOnTimer(Sender: TObject);
begin
PostMessage(Handle, WM_USER + 100, Integer(Sender), 0)
end;

procedure TForm1.WMUserPlus100(var Message: TMessage);
begin
Timers.Remove(TObject(Message.WParam))
end;


 
Rouse_ ©   (2003-10-15 20:06) [14]

> Юрий Зотов © (15.10.03 20:02) [13]
Так то оно так, но если делать на апи, то не будет расходоваться память под экземпляр класса. Как никак а оптимизация :))

Желаю успехов


 
Юрий Зотов ©   (2003-10-15 20:08) [15]

> Rouse_ © (15.10.03 20:06) [14]

А если написать на API всю программу, то оптимизация будет еще сильнее.

Вот только оптимизация ЧЕГО?
:о)


 
Rouse_ ©   (2003-10-15 20:15) [16]

SetTimer(FHandle, <ИДЕНТИФИКАТОР>, 1000, nil);
и на WM_TIMER будем определять <ИДЕНТИФИКАТОР> по WParam, затем выполняем ему KillTimer.
Никакого массива, никаких проблем с классами и событиями. Ведь кажется ваши слова были что лучше пользоваться тем что давно уже придумано, а не делать свои велосипеды?

Желаю успехов


 
Кулюкин Олег ©   (2003-10-15 20:20) [17]


> Rouse_ ©

Вам не кажется что автору ветки проще будет работать с компонентами, а не с АПИ?


 
Юрий Зотов ©   (2003-10-15 20:23) [18]

> лучше пользоваться тем что давно уже придумано, а не делать
> свои велосипеды?

Именно так. Как раз поэтому есть смысл использовать TTimer, раз уж используется форма.


 
Rouse_ ©   (2003-10-15 20:26) [19]

Хорошо, согласен с вами обоими, но в плане эффективности использования памяти мой вариант более эффективен. Думаю это нельзя отрицать.

Желаю успехов


 
Юрий Зотов ©   (2003-10-15 20:28) [20]

Никто и не отрицает. Но... см. [15].


 
Rouse_ ©   (2003-10-15 20:34) [21]

Просто во мне, как всегда, опять заговорил старый фанат АПИ ;)
и при постановке мне данной задачи, я бы выполнил ее именно так. Просто привык проводить оптимизацию кода еще в момент написания самого кода.

Желаю успехов.


 
Palladin ©   (2003-10-15 20:41) [22]

Лучше задуматся, а нужны ли эти несколько таймеров, и можно ли обойтись одним.


 
Rouse_ ©   (2003-10-15 20:50) [23]

> Palladin © (15.10.03 20:41) [22]
Раз автор это утверждает, то, по видимому, нужны.

Желаю успехов



Страницы: 1 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
6-89437
DrFox
2003-08-31 20:55
2003.10.27
Определение имени компьютера в локальной сети


14-89535
sniknik
2003-10-08 02:27
2003.10.27
Переопределение прерываний в Dos, Pascal, видео (int 10h)


14-89501
han_malign
2003-10-09 14:03
2003.10.27
---|Ветка была без названия|---


3-89140
Bless
2003-10-07 17:30
2003.10.27
Lookup-поле и unknown error


7-89623
IGORYOK
2003-08-12 11:46
2003.10.27
Может ли библиотека передавать сообщения программе и наоборот ожи