Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
xaysnet
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 25
#1

Таймер

16.12.2017, 22:39. Просмотров 351. Ответов 5
Метки нет (Все метки)

Вот код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Timer1Timer(Sender: TObject);
var
 z:integer;
begin
  if z=0 then
    begin
    Sleep(750); 
  ScreenShotActiveWindow(Image1.Picture.BitMap);
   z:=z+1  ;
  end
  else
    Timer1.Enabled:=false;
  end;
Проблема в том, что таймер не вырубается, он циклически продолжает скриншотить.
Если я поставлю z=1, он не включается, если ставлю z=0 он включается. Тобишь if работает, но почему он не хочет вырубать таймер???? Объясните.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2017, 22:39
Ответы с готовыми решениями:

Таймер на форме
При открытии формы должен запускаться таймер, который автоматически начинает...

Как визуализировать таймер
Здравствуйте, я хочу сделать функцию, запускающую таймер. Но этот таймер должен...

Таймер, смена форм
Никак не могу разобраться с таймером. Надо, чтоб при запуске программы сразу же...

Таймер срабатывает только 1 раз
Как сделать, если время таймера закончилось, и он выполнил то что ему было...

Таймер с обратным отсчетом и паузой
Кто-нибудь может помочь написать код для таймера с обратным отсчетом и с...

5
Ivandur
193 / 415 / 161
Регистрация: 11.08.2016
Сообщений: 855
16.12.2017, 23:03 #2
z- локальная переменная процедурочечки. При каждом входе в процедурочечку её значение будет неизвестно каким(скорее всего - 0, но не факт). Так что надо убрать её из заголовка процедурочечки и сделать её членом формы. И инициализировать в FormCreate или FormShow, это уж тебе видней.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25738 / 17292 / 6875
Регистрация: 22.10.2011
Сообщений: 30,518
Записей в блоге: 6
16.12.2017, 23:07 #3
Зачем тут вообще Z - непонятно. Все равно после снятия первого же скриншота второго быть уже не должно, так напиши проще:
Pascal
1
2
3
4
5
6
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Sleep(750); 
  ScreenShotActiveWindow(Image1.Picture.BitMap);
  Timer1.Enabled:=false;
end;
0
xaysnet
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 25
16.12.2017, 23:14  [ТС] #4
Я это сделал, дело в другом. Мне надо, пару раз провести данную операцию...
Это упрощения задачи, но не решения ее ...

Добавлено через 3 минуты
Ivandur.
Я думал ее в глобальные поместить, но при повторном чтении данной процедуры, у меня опять он будет брать 0, а не тому значению, которому он вышел.
Я не могу докуботурить, как значения приравнять задать 0, но потом к нему не надо было ссылаться.
0
northener
пофигист широкого профиля
3257 / 2309 / 629
Регистрация: 15.07.2013
Сообщений: 13,643
17.12.2017, 01:22 #5
Цитата Сообщение от xaysnet Посмотреть сообщение
Я думал ее в глобальные поместить, но при повторном чтении данной процедуры, у меня опять он будет брать 0, а не тому значению, которому он вышел.
С какого перепуга?
1
xaysnet
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 25
17.12.2017, 16:07  [ТС] #6
northener,
хотя, ты прав, он 1 раз считает. И до выключения программы, она будет фигурировать
0
17.12.2017, 16:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2017, 16:07

Таймер без формы Lazarus
Возникла проблема с таймером. Дело в том, что в модуле(unit) есть набор функций...

Таймер. Некорректное отображение времени
Имеется таймер, интервал срабатывания 1000мс, он активируется при создании...

Разработать программу «Таймер прямого отсчета»
Разработать программу «Таймер прямого отсчета» от нуля до заданного значения,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru