Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/88: Рейтинг темы: голосов - 88, средняя оценка - 4.63
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651

Как использовать Таймеры?

29.06.2017, 21:58. Показов 18539. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Как использовать таймеры в Паскале? Можно ли как-то "сохранить" его в файл? Если да,то,пожалуйста, приведите пример =)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2017, 21:58
Ответы с готовыми решениями:

как программно синхронизировать таймеры?
Нужно периодически обнулять один таймер по событию второго. Как-то наивно предполагала, что если я в обработчике прерывания TYM1 сделаю...

Как создавать таймеры на лету?
Программа в которой пользователь создает для себя напоминания через определенное количество времени, например: покормить кошку через 6...

Как остановить все таймеры в функции clearInterval
Есть функция, при нажатии на левую кнопку мыши эта команда на странице крутит определенный элемент на 5 градусов по часовой стрелке, каждую...

14
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33193 / 21489 / 8233
Регистрация: 22.10.2011
Сообщений: 36,876
Записей в блоге: 12
29.06.2017, 23:55
Что именно хочется "сохранить" в файл? Время старта? Время финиша? Интервал? Время работы таймера?
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
01.07.2017, 23:18  [ТС]
Пока точно сказать не могу =) Если столько вариантов,то не могли бы показать каждый на конкретном примере?) Заранее спасибо
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
04.07.2017, 10:12
Всё таки не помешала бы конкретика
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
08.07.2017, 14:54
Может надо было заглянуть в справочку?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses Timers;
 
procedure TimerProc;
begin
  write(1);
end;
 
 
begin
  var t := new Timer(100,TimerProc);
  t.Start;
  Sleep(3000);
end.
constructor (ms: integer; TimerProc: procedure); Создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc, называемой обработчиком таймера. Созданный таймер необходимо запустить, вызвав метод Start
procedure Start; Запускает таймер
procedure Stop; Останавливаетает таймер
property Enabled: boolean read write; Запущен ли таймер
property Interval: integer read write; Промежуток времени между вызовами обработчика таймера
1
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
23.07.2017, 14:35  [ТС]
Мне,в данном случае, нужно обрабатывать массив в процедуре TimerProc. Но передать в нее ничего нельзя(процедура должна быть без параметров) Как правильно сделать это?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
23.07.2017, 17:21
Объявить массив и его размер как глобальные переменные.
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
23.07.2017, 18:35  [ТС]
Естественно, так и сделал. 18 строка: ожидалась функция, встречена процедура TimerProc
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses Timers;
const
  n = 5;
 
type
  mas = array[1..n, 1..n] of char;
  
var 
  a: mas;
 
procedure TimerProc(x: mas);
  begin
  
  end;
 
 
begin
  var t := new Timer(100, TimerProc(a)); 
  
  t.Start;  
  Sleep(1100);
  
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
23.07.2017, 19:16
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uses Timers;
const
  n = 5;
 
type
  mas = array[1..n, 1..n] of char;
  
var  a: mas;
     k:integer;
 
procedure TimerProc;
begin
inc(k);
a[(k-1)div n+1,(k-1)mod n+1]:=chr(65+random(26));
write(a[(k-1)div n+1,(k-1)mod n+1]:2);
if k mod n=0 then writeln;
end;
 
begin
randomize;
var t := new Timer(300, TimerProc); 
t.Start;  
sleep(300*(n*n+1));
end.
Добавлено через 13 минут
Или так.
Pascal
1
2
sleep(5000);
if k=n*n then t.Stop
1
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
24.07.2017, 14:33  [ТС]
Пытаюсь заставить "двигаться" одну ячейку массива. Пока только вверх) Конечно,идея дурная, но так)) Можете указать на ошибку?)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
uses Timers, crt;
const
  n = 20;
 
type
  mas = array[1..n, 1..n] of char;
 
var
  a: mas;
  x: byte := 20;
  y: byte := 10;
 
function MasOut(x: mas): mas;
begin
  for var i := 1 to n do
  begin
    for var j := 1 to n do
    begin
      textcolor(12);
      write(x[i, j]:2);  
    end;
    writeln;
  end;
end;
 
procedure TimerProc;
begin       
  textcolor(15);    
  
  while x <= 1 do
  begin    
    a[x, y] := 'X';   
    dec(x);       
    a[x + 1, y] := ' ';
    MasOut(a);
  end;
end;
 
begin  
  for var i := 1 to n do
  begin
    for var j := 1 to n do
    begin
      textBackGround(15);
      textcolor(12);          
      write(a[i, j]:2);
    end;
    writeln;
  end;
  writeln;writeln;  
  
  var t := new Timer(300, TimerProc); 
  t.Start;  
  sleep(300 * (n * n + 1));
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
24.07.2017, 15:37
Все-таки Crt+Timers это что-то мало съедобное, вот написал, но лучше бы это не видеть, все-таки Crt это для Турбо Паскаля, там красивше будет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses Timers, crt;
const n = 10;
var a: array[1..n, 1..n] of char;
    x,y:byte;
procedure MasOut;
begin
textBackGround(0);
clrscr;
for var i := 1 to n do
 begin
  for var j := 1 to n do
   begin
    textBackGround(15);
    textcolor(12);
    write(a[i, j]:2);  
   end;
  writeln;
 end;
end;
 
procedure TimerProc;
begin       
 if x>1  then
  begin  
   dec(x); 
   a[x, y] := 'X';   
   a[x + 1, y] := ' ';
   MasOut;
  end;
end;
 
begin 
for var i := 1 to n do
for var j := 1 to n do
if i=n then a[i,j]:='X' else a[i,j]:=' ';
MasOut;
for var j:=1 to n do
 begin
  x:=n;
  y:=j; 
  var t := new Timer(200, TimerProc); 
  t.Start;  
  sleep(n*200);
  if x=1 then t.Stop;
 end; 
writeln; 
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33193 / 21489 / 8233
Регистрация: 22.10.2011
Сообщений: 36,876
Записей в блоге: 12
24.07.2017, 15:44
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Это что-ли хочется?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
uses Timers, crt;
const
  n = 20;
 
type
  mas = array[1..n, 1..n] of char;
 
var
  a: mas;
  x: byte := 20;
  y: byte := 10;
 
function MasOut(x: mas): mas;
begin
  TextBackground(15);
  for var i := 1 to n do
  begin
    for var j := 1 to n do
    begin
      textcolor(12);
      write(x[i, j]:2);  
    end;
    writeln;
  end;
end;
 
procedure TimerProc;
begin       
  textcolor(15);    
  
  if x >= 1 then
  begin    
    a[x, y] := ' ';   
    dec(x);       
    a[x, y] := 'X';
    TextBackground(Black);
    clrscr;
    MasOut(a);
  end;
end;
 
begin  
  for var i := 1 to n do
  begin
    for var j := 1 to n do
    begin
      textBackGround(15);
      textcolor(12);          
      write(a[i, j]:2);
    end;
    writeln;
  end;
  writeln;writeln;  
  
  var t := new Timer(300, TimerProc); 
  t.Start;
  Readln;
  // sleep(300 * (n * n + 1));
end.
1
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
24.07.2017, 17:02  [ТС]
volvo, да,большое спасибо. "Дерганье" поля как-то исправить нельзя? Просто интересно
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33193 / 21489 / 8233
Регистрация: 22.10.2011
Сообщений: 36,876
Записей в блоге: 12
24.07.2017, 19:03
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
"Дерганье" поля как-то исправить нельзя?
Вот так не дергается:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
uses Timers, crt;
const
  n = 20;
 
type
  mas = array[1..n, 1..n] of char;
 
var
  a: mas;
  x: byte := 20;
  y: byte := 10;
 
function MasOut(x: mas): mas;
begin
  TextBackground(15);
  textcolor(12);
  for var i := 1 to n do
  begin
    for var j := 1 to n do
    begin
      write(x[i, j]:2);  
    end;
    writeln;
  end;
end;
 
procedure TimerProc;
begin
  if x >= 1 then
  begin
    a[x, y] := ' ';   
    dec(x);       
    a[x, y] := 'X';
    GotoXY(1, 1);
    MasOut(a);
  end;
end;
 
begin
  crt.HideCursor;
  textBackGround(15);
  textcolor(12);          
  for var i := 1 to n do
  begin
    for var j := 1 to n do
    begin
      write(a[i, j]:2);
    end;
    writeln;
  end;
  writeln;writeln;  
  
  var t := new Timer(300, TimerProc); 
  t.Start;
  Readln;
end.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
03.09.2017, 19:00
Если задача звучит как "подвигать букву вверх", то можно сделать так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
uses Crt, Timers;
const
  X = 'X';
 
var
  T1: Timer;
  Y: integer := 20;
 
procedure MoveX();
begin
  if Y > 1 then
  begin
    GotoXY(10, Y);
    TextColor(White);
    Write(X);
    Dec(Y);
    GotoXY(10, Y);
    TextColor(Red);
    Write(X);
  end;
end;
 
begin
  for var i := 1 to 20 do
    for var j := 1 to 20 do
    begin
      GotoXY(i, j);
      TextBackground(White);
      Write(' ');
    end;
  
  T1 := new Timer(1000, MoveX);
  T1.Start();
  Sleep(20000);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.09.2017, 19:00
Помогаю со студенческими работами здесь

Как ставить таймеры на ip на добавление записей в базу данных
Всем снова привет, Как можно сделать что бы с одного ip могли добавить только одну запись в базу данных интервалом в 1 час? ...

Как правильно создать таймеры чтобы они не блокировали форму
Здравствуйте! Решил переписать кликер, который раньше был мною написан на скриптовом языке AutoIT. До определенного момента все ...

Секундомеры, таймеры - что они в теории? Как работают в коде?
Всем привет. Меня, как новичка в программировании, очень удивило отсутствие подсчёта реального времени в программах, а точнее его простого...

Как написать программу для Samsung Smart TV, реализующая таймеры включения/выключения
Доброе время суток! Сразу прошу прощения, если пост не в теме. Недавно столкнулся с проблемой недостатка таймеров...

Как использовать куки, чтобы потом было можно их использовать в запросах
Скажите полажуйста! как добавить ! куки , чтобы потом было можно использовать в запросах! тоесть public string Get(string url,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru