Реализация VCL
procedure TTimer.UpdateTimer;
begin
KillTimer(FWindowHandle, 1);
if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then
if SetTimer(FWindowHandle, 1, FInterval, nil) = 0 then
raise EOutOfResources.Create(SNoTimers);
end;
В FMX иначе, интересно, почему так? есть какая то причина, или просто поленились дописать?
procedure TTimer.UpdateTimer;
begin
{...}
FTimerHandle := FPlatformTimer.CreateTimer(FInterval, Timer);
if FTimerHandle = 0 then
FEnabled := False; // Упс.. таймер просто молча сдохнет)) и будешь гадать что случилось с приложением, почему оно "зависло"
end;