Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2018, 11:11   #1
Renat5677
Новичок
Джуниор
 
Регистрация: 13.09.2018
Сообщений: 2
По умолчанию остановить таймер через определенное время

как сделать так чтобы этот таймер остановился через 5 секунд?
запускается он у меня через кнопку.
Код:
procedure TForm6.Timer1Timer(Sender: TObject);

begin
randomize;
setcursorpos(random(screen.width-1),random(screen.height-1));




end;
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 13.09.2018 в 11:39.
Renat5677 вне форума Ответить с цитированием
Старый 13.09.2018, 11:19   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Если таймер многократно запускается, то randomize вынести из процедуры

Запомни перед запуском таймера GetTickCount. В процедуре по-новой получай и если разница с запомненным больше или равна 5000 то enabled таймера в false
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.09.2018, 12:07   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Запомни перед запуском таймера GetTickCount. В процедуре по-новой получай и если разница с запомненным больше или равна 5000 то enabled таймера в false
или, как вариант, завести ещё один таймер, с небольшим интервалом (например, 200 мс) и в нём проверять прошедшее время.
После достижения нужного периода - выключить таймер1 и себя.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.09.2018, 02:07   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Запомни перед запуском таймера GetTickCount. В процедуре по-новой получай и если разница с запомненным больше или равна 5000 то enabled таймера в false
5000 тиков системного таймера это (в зависимости от погоды и программы телепередач) от 50 до 70 секунд.
Вот Serge_Bliznykov правильно предложил проверять прошедшее время. Вот только второй таймер это лишнее.
northener вне форума Ответить с цитированием
Старый 16.09.2018, 05:33   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i:integer;
  t:TDateTime;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   i:=1000000;
   Timer1.Enabled:=false;
   Timer1.Interval:=50;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   i:=i-1;
   Caption:=IntToStr(i);
   If t<Now then
      Timer1.Enabled:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Timer1.Enabled:=true;
   t:=Now+5/24/60/60;
end;

end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 16.09.2018, 08:17   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
5000 тиков системного таймера это (в зависимости от погоды и программы телепередач) от 50 до 70 секунд.
На феликсе, что-ли? Но и на нем, если бы системный таймер был, то от погоды и программы телепередач зависимость нулевая )

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.09.2018 в 08:33.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение процедуры через определенное время 2909 Общие вопросы Delphi 1 17.05.2013 20:52
Смена изображений через определенное время N.i.k.o.l.a.y. Общие вопросы Delphi 22 17.02.2013 21:31
Отправка данных через определенное время n-sia PHP 5 19.03.2012 16:56
Выключение через определенное время Rebel123 Общие вопросы Delphi 8 31.07.2011 19:48
закрытие формы через определенное время motaro Общие вопросы Delphi 18 22.08.2009 14:04