-
Корректно ли так будет:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Sender.Free;
end;
Или лучше убить его через PostMessage?
-
Корректно. Проверить дело 5 минут
-
обработчик события таймеру не принадлежит, а принадлежит, в данном случае, форме. Следовательно, убивание таймера формально допустимо.
-
2
> Dimka Maslov © (29.01.18 11:57) [2]
Ну вообще-то любой обработчик события любого компонента ему не принадлежит. Это метод класса формы. Вот к примеру обработчик TButton.OnClick. Но в этом обработчике уничтожать кнопку весьма стрёмно может быть.
-
угу... Ну разве что если только на всякий случай:
TTimer(Sender).Free();
-
> Ну разве что если только на всякий случай:
> TTimer(Sender).Free();
Не будет ли благородный дон так любезен объяснить сакральный смысл приведенного кода ?
-
> Z (30.01.18 14:11) [4]
Метод Free не нуждается ни в каком приведении типа. Метод Free во всей VCL один единственный наследованный от TObject.
-
> один единственный
Так уж один единственный?
Но даже в силу неединственности унаследованного метода, всё равно неплохо было перед уничтожением объекта проверить, тот ли объект уничтожается.
-
> Dimka Maslov © (31.01.18 11:42) [7]
>
>
> > один единственный
>
>
> Так уж один единственный?
Free не виртуальный.
> всё равно неплохо было перед уничтожением объекта проверить,
> тот ли объект уничтожается.
В [4] никаких проверок не производится, обычное тупое приведение типа.
-
> Free не виртуальный
Наследуемые и виртуальные методы - две большие разности. И метод Free не является единственным унаследованным от TObject невиртуальным методом (смотрим реализацию TObject.
А про [4] я вообще молчу.
-
> Dimka Maslov © (31.01.18 14:31) [9]
> И метод Free не является единственным унаследованным от
> TObject
Пардон. Употребил в своём сообщении набор слов не позаботившись о том, где поставить запятую в смысле "Казнить нельзя помиловать".
А ещё точнее не поставил ударение в своём сообщении на "один единственный".
-
Dimka Maslov © (31.01.18 11:42) [7]
> всё равно неплохо было перед уничтожением объекта проверить,
> тот ли объект уничтожается
Зачем ? Если логика ясна, другой объект не уничтожить, если логика не ясна, проверка не улучшит положение.
-
> Dimka Maslov © (29.01.18 11:57) [2]
> обработчик события таймеру не принадлежит, а принадлежит,
> в данном случае, форме
Причина, скорее, в том, что сообщения таймера are posted.
--
Regards, LVT.
-
> are posted.
Даже если бы были sent - обработчик принадлежал бы форме
> Зачем ? Если логика ясна,
При ясной логике таймер глушится, а не уничтожается.
-
> Dimka Maslov © (01.02.18 16:49) [13]
> Даже если бы были sent - обработчик принадлежал бы форме
Cообщения таймера are posted. Следовательно, убивание таймера формально допустимо.
При некоторых ограничениях, к которым не относится принадлежность обработчика
чему бы то не было.
Ну, или формально неотличимо от PostMessage.
--
Regards, LVT.