Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 104

Таймер

02.12.2018, 17:58. Показов 2346. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравия. Пытаюсь реализовать отображение времени в заголовке окна через Таймер.

Pascal
1
2
3
4
5
6
7
8
9
10
11
uses System,System.Timers, CRT;
var dt:DateTime; dt1:timer;
procedure ShowDate;
begin
  CRT.SetWindowTitle(dt.Hour+':'+dt.Minute+':'+dt.Second);  
end;
begin
  dt:=DateTime.Now;
  dt:=DateTime.Now;
  dt1:=Timers.Timer.Create(1000,ShowDate);
end.
Ошибка в том, что у конструктора 1 аргумент - время в миллисекундах, хотя в самом модуле Timers.pas написано, что их два. Так или иначе, как мне привязать выполнение процедуры по истечению таймера? Заранее спасибо!

Добавлено через 10 минут
Так, ладно. С этим я разобрался. Кажется, я просто подключил не ту библиотеку.
Написал вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses CRT,Timers;
var dt:DateTime; dt1:timer;
 
procedure ShowDate;
begin
  dt:=DateTime.Now;
  CRT.SetWindowTitle(dt.Hour+':'+dt.Minute+':'+dt.Second);
  dt1.Start;
end;
begin
  dt:=DateTime.Now;
  dt1:=Timer.Create(1000,ShowDate);
  dt1.Start;
end.
Может, кому-то поможет)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2018, 17:58
Ответы с готовыми решениями:

Таймер
Как зафиксировать положение двух строк? uses system,graphabc; const a='26.05.2017 10:00:00'; procedure phone; begin ...

Установить таймер
Здравствуйте! Помогите мне вставить таймер в мою программу чтоб при вводе слова старт таймер работать и показывался в верхнем левом углу. ...

Не работает таймер
Код: uses Timers,Events; var tickers: real; function GiveErrorBad(lolikon:Boolean):boolean; begin ...

6
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.12.2018, 18:16
Мне кажется нужно так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses CRT,Timers;
var dt:DateTime; dt1:timer;
procedure ShowDate;
begin
  dt:=DateTime.Now;
  CRT.SetWindowTitle(dt.Hour+':'+dt.Minute+':'+dt.Second);
end;
begin
  dt:=DateTime.Now;
  dt1:=Timer.Create(1000,ShowDate);
  dt1.Start;
  sleep(10000);
end.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
02.12.2018, 18:55
Таймеры выполняют кучу лишнего, лучше использовать более низкоуровневые возможности:
Pascal
1
2
3
4
5
6
7
8
9
10
11
begin
  
  System.Threading.Thread.Create(()->
  while true do
  begin
    var t := System.DateTime.Now;
    System.Console.Title := $'{t.Hour}:{t.Minute}:{t.Second}';
    Sleep(1000);
  end).Start;
  
end.
Можно вынести лямбду в отдельную процедуру, если она вам ещё для чего то понадобится:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure SetTitleToTime;
begin
  
  while true do
  begin
    var t := System.DateTime.Now;
    System.Console.Title := $'{t.Hour}:{t.Minute}:{t.Second}';
    Sleep(1000);
  end;
  
end;
 
begin
  System.Threading.Thread.Create(SetTitleToTime).Start;
end.
А ещё, не обязательно форматировать время, оно и само это умеет:
Pascal
1
2
3
4
5
6
7
8
9
10
11
begin
  
  System.Threading.Thread.Create(()->
  while true do
  begin
    var t := System.DateTime.Now;
    System.Console.Title := t.ToString;
    Sleep(1000);
  end).Start;
  
end.
Правда, в таком случае показывает ещё и дату.

Если что то не понятно - наведите на него курсор. Или ещё можно поставить курсор на него же и нажать F1. В большинстве случаев открывается справка паскаля, а в случае, к примеру, Thread - открывается msdn (онлайн справка по всему .Net и не только). Есть так же вариант самому забивать в поиск на msdn, тогда результат будет быстрее и возможно более правильный:
https://social.msdn.microsoft.... =true&ac=4

(это ссылка на поиск System.Timers.Timer, там можно почитать как его правильно использовать, а не в каких то там модулях, про которые вы даже не сказали - откуда взяли. Открывайте примеры для C#, они строчка в строчку переводятся на паскаль)

Добавлено через 4 минуты
P.S.
Цитата Сообщение от vany200397 Посмотреть сообщение
подключил не ту библиотеку.
Библиотека это .dll , они подключаются через $reference
System.Timers это неймспейс (пространство имён), имена из них всегда доступны, к примеру System.Timers.Timer
CRT и просто Timers - это модули. Их нужно подключить перед тем как можно будет использовать
1
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 104
02.12.2018, 19:24  [ТС]
Всем спасибо, но меня устроит моё решение. Ибо из-за sleep, как я понимаю, консоль не будет реагировать вообще не на какие днйствия в течении заданного времени)
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.12.2018, 19:26
Цитата Сообщение от vany200397 Посмотреть сообщение
как я понимаю, консоль не будет реагировать вообще не на какие днйствия в течении заданного времени)
Не сочиняйте, 10 секунд будет раз в секунду менять заголовок формы, а вот без sleep как раз ничего.
1
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 104
02.12.2018, 19:48  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Сообщение от vany200397
как я понимаю, консоль не будет реагировать вообще не на какие днйствия в течении заданного времени)
Не сочиняйте, 10 секунд будет раз в секунду менять заголовок формы, а вот без sleep как раз ничего.
Извиняюсь, я не про в Паскале) Просто предположил) В любом случае, спасибо)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
02.12.2018, 20:45
Цитата Сообщение от vany200397 Посмотреть сообщение
Ибо из-за sleep, как я понимаю, консоль не будет реагировать вообще не на какие днйствия
Нет, sleep находится в отдельном потоке. Каждый поток выполняется независимо (и одновременно). А когда выполняется Sleep - поток отдаёт всю мощность процессора остальным потокам. И таймеры ваши тоже запускают свои потоки. Но они нагружают их кучей лишних действий, поэтому я и говорю - руками потоки создавать лучше.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2018, 20:45
Помогаю со студенческими работами здесь

Как встроить таймер в часы
Здравствуйте. Задание такое, написать на pascalABC, часы с таймером, сами часы есть, но вот, как встроить туда таймер? Как всё это...

Графический таймер работает через раз
program CyberForum; uses ABCobjects, GraphABC, Timers; var t1 : Timer; var time_HUD : TextABC; var time_second : integer; ...

Добавить минутный таймер по истечение которого игра кончится
Здравствуйте, есть игра в которую нужно добавить минутный таймер по истечение которого игра кончится и выведется количество набранных...

Не происходит рисование при вставке процедуры для рисования в таймер. PaintBox FormsABC
Как я понял отрисовка происходит во время работы главного тела программы, а после запуска процедуры через таймер отрисовка не происходит. ...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru