Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/125: Рейтинг темы: голосов - 125, средняя оценка - 4.70
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134

Часы в Pascal ABC.

26.11.2009, 20:57. Показов 25153. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Значит хочу реализовать часы в паскале абц. Процедуры GETTIME нет. Есть модуль Timers. Реализация проходит так: выделяется динамическая память под таймер. И командой <указатель>.start; Начинается выполнение процедуры, через временные промежутка времени, которая описана в VAR при описи указателя: <указатель>= naw Timer(<время в миллисекундах>,<процедура>); При использование процедуры с параметрами, то ошибка выдаётся. Что делать кто побывал?

Вот что в HELP пишется про этот модуль:

Модуль Timers
Модуль Timers содержит класс Timer, позволяющий выполнять определенные действия через равные промежутки времени. В конструкторе класса Timer указывается промежуток времени и имя процедуры без параметров - обработчика события таймера, вызываемой через указанный промежуток времени.
Класс Timer имеет следующий интерфейс:

Pascal
1
2
3
4
5
6
7
8
type 
  Timer = class
    constructor (ms: integer; TimerProc: procedure); 
    procedure Start;
    procedure Stop;
    property Enabled: boolean read write;
    property Interval: integer read write;
  end;
Члены класса Timer описаны в следующей таблице:

constructor (ms: integer; TimerProc: procedure);
Создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc, называемой обработчиком таймера. Созданный таймер необходимо запустить, вызвав метод Start
procedure Start;
Запускает таймер
procedure Stop;
Останавливаетает таймер
property Enabled: boolean read write;
Запущен ли таймер
property Interval: integer read write;
Промежуток времени между вызовами обработчика таймера

Вот пример работы:

Данная программа выводит 1 каждые 100 миллисекунд в течение 3 секунд:

Pascal
1
2
3
4
5
6
7
8
9
10
uses Timers;
procedure TimerProc;
begin
  write(1);
end;
begin
  var t := new Timer(100,TimerProc);
  t.Start;
  Sleep(3000);
end.
Вызов Sleep здесь обязателен, иначе программа после создания таймера сразу закончится, и обработчик таймера ни разу не сработает.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2009, 20:57
Ответы с готовыми решениями:

Аналоговые часы (для обычного Pascal ABC)
Здравствуйте. Создайте аналоговые часы показывающее текущее время. Помогите подкрутить код. Вот что имеется: uses Crt,...

Перевести код Pascal ABC NET в Pascal ABC
Помогите, плиз Сделал на Pascal ABC NET, но нужно его открыть в обычном Pascal ABC. Не компилит этот код, помогите исправить. uses ...

Перевод из Pascal ABC.net в Pascal ABC
Помогите, пожалуйста, перевести программу в Pascal ABC с Pascal ABC.net; если не трудно, объясните, почему не компилирует программу Pascal...

9
73 / 72 / 37
Регистрация: 21.11.2009
Сообщений: 258
26.11.2009, 21:52
Во-первых эта программа не работает.

Во-вторых я не понял, зачем мудрить, если можно сделать так:
Pascal
1
2
3
4
5
6
begin
  while 1=1 do begin
  Sleep(100);
  write(1);
  end;
end.
В-третьих, что подразумевается под словом "часы". В ABC по-моему часы не сделать, только таймер.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
27.11.2009, 02:47
Лучший ответ Сообщение было отмечено как решение

Решение

Sven_0007, вот Вам программка, думаю она ответит на все Ваши вопросы, тут есть счетчик времени сначала программы, и дата и время... Единственное что хотел бы отметить, так это что функция даты-времени в паскале ABC немного "кривовата", т.е. в ней day это год, a year это день. Плюс немного отстает из-за цикла секунды с запуска программы и секунды времени... Ну эт мелочи, я думаю, что Вы разберетесь и выберете то, что Вам нужно(время или секундомер).
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses
  Utils,Crt;
type
  DateTime=record
    Day,Month,Year,Hour,Minute,Second,Milliseconds:integer;
  end;
var
  time:DateTime;
begin
  HideCursor;
  repeat
    time:=CurrentDateTime;
    write('C íà÷àëà ðàáîòû ïðîãðàììû ïðîøëî: ',Milliseconds div 1000,'  ñåê. Äàòà: ',time.year,'.',time.month,'.',
          time.day,' Âðåìÿ: ',time.hour,':',time.minute,':',time.second,':',time.Milliseconds div 100);
    GotoXY(1,1)
  until
    1<0
end.
5
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
27.11.2009, 11:48  [ТС]
time:=CurrentDateTime;
Ошибка вот в этой строке.
Если её убрать то только работает таймер.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
27.11.2009, 11:53
Sven_0007, там не может быть ошибки, скачайте новый Pascal ABC. Логично, что если ёё убрать то будет работать только таймер... Сейчас протестил еще раз код, он абсолютно рабочий... у меня ABC(3.0.1.26)
1
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
27.11.2009, 12:16  [ТС]
Всё отлично работает. Пользовался паскалем авс.нет, теперь только просто авс

Добавлено через 5 минут
=( А что с exe файлами? он их не создаёт=(
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
27.11.2009, 12:18
Цитата Сообщение от Sven_0007 Посмотреть сообщение
=( А что с exe файлами? он их не создаёт=(
а что с exe? нет их в ABC... если Вам нужен exe берите turbo pascal и на нем делайте...
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
27.11.2009, 12:25  [ТС]
понятно. Значит лучше делфи...
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
27.11.2009, 12:38
Sven_0007, тут я с Вами согласен.
0
3 / 3 / 0
Регистрация: 10.12.2009
Сообщений: 108
28.03.2010, 15:01
как поставить в abc pascal таймер на время выполнения программы?
я думаю это примерно реализуется с помощью
Процедура StartTimer(n) запускает таймер с описателем n.

Процедура StopTimer(n) останавливает таймер с описателем n.
и находя разницу между ними?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2010, 15:01
Помогаю со студенческими работами здесь

Переделайте, пожалуйста, программу из Turbo pascal в ABC pascal
Помогите, пожалуйста, перевести из PASCAL TURBO в PASCAL ABC Program ProgInt; Uses Crt, Graph; Var Punkt : Byte; Knopka :...

Нужно перевести код из Turbo Pascal в Pascal ABC
Program n5; { Задача. Описать функцию less(f) от непустого файла f типа reals, type = file of...

Перевести в код Pascal ABC из кода Pascal Delphi
procedure TForm1.Button1Click(Sender: TObject); const n=8; var x:array of real; y,z:array of real; i,j:byte; begin ...

Перевести в код Pascal ABC из кода Pascal Delphi
Помогите перевести в код ABC а то с Delphi вообще не знаком. Задание было такое: Записать в файл последовательного доступа N...

Переписать программу с Turbo Pascal на Pascal ABC
Нужно переделать программу,написанную на Turbo Pascal в ту,чтобы работала на Pascal ABC. Помогите пожалуйста,делаю,но конечный результат не...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru