Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 825

/ вопрос решён /

Приветствую, уважаемые эксперты! Подскажите пожалуйста, как отображать в течение всего времени работы программы текущее время, скажем, в правом нижнем углу?

alone Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: alone (статус: Посетитель)
Вопрос отправлен: 4 августа 2007, 01:22
Состояние вопроса: решён, ответов: 4.

Ответ #1. Отвечает эксперт: Косолапов Дмитрий Юрьевич

Здравствуйте, Гадлевский Олег Вячеславович!
Необходимо воспользоваться компонентом TTimer, и в обработчике события OnTimer написать примерно следующее: Label1:=TimeToStr(Time)
Интервал таймера, например, 1000.

Ответ отправил: Косолапов Дмитрий Юрьевич (статус: 8-ой класс)
Время отправки: 4 августа 2007, 09:56
Оценка за ответ: 1

Комментарий к оценке: Простите, но я задавал вопрос по Паскалю...

Ответ #2. Отвечает эксперт: min@y™

Вот, откопал я в архиве турбопаскаль :) и написал тебе примерчик вот такой:

program timer;
 
uses crt, dos;
 
var
  { Часы, минуты, секунды, сотые доли секунды }
  hour, min, sec, sec100: word;
 
{ Преобразование времени в строку }
function TimeToStr(const h, m, s: word): string;
var
  sh, sm, ss: string[2];
begin
  Str(h, sh);
  Str(m, sm);
  Str(s, ss);
 
  { Добавление ведущих нулей, если нужно }
  if h > 10
    then sh:= \'0\' + sh;
  if m > 10
    then sm:= \'0\' + sm;
  if s > 10
    then ss:= \'0\' + ss;
 
  { Результат функции }
  TimeToStr:= sh + \':\' + sm + \':\' + ss;
end;
 
begin
  clrscr;
 
  repeat
    GetTime(hour, min, sec, sec100);  { Текущее время }
    GotoXY(70, 24);                   { Позиция курсора }
    Write(TimeToStr(hour, min, sec)); { Вывод на экран }
  until keypressed;
end.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 6 августа 2007, 08:44
Оценка за ответ: 2

Комментарий к оценке: Не, так плохо, надо чтобы, например, рисовались окна, че нить там выполнялось, а не только выводилось время, я же писал уже. Я видел такую программу, реализованную на Pascal, она даже когда то была у меня где то, но я не помню, как она реализована в плане вывода времени. Просто вывести время я могу, только мне интересно, чтобы время вывоилось так, ну как будто это дополнение программы, а не основная её функция, понимаете? У парня, который писал ту программу, было сделано так, что время выводилось в правом нижнем углу, а при этом можно было выбирать из пунктов меню что то, ну еще кроме времени что то выполнялось. У него был подключен модуль работы с мышью и всё выполнялось с помощью неё, если это чем то поможет...

Ответ #3. Отвечает эксперт: DNK

Здравствуйте, Гадлевский Олег Вячеславович!

Если вам нужен хороший оконный интерфейс и интерактивность, то прямая дорога в библиотеку Turbo Vision, входит в стандартный пакет TP 7.0. С ее помощью можно организовать оконный интерфейс аналогичный среде TP с менюшками, дилоговыми окнами и прочими примочками. Недостаток - нужно изучить объектное программирование. Хорошо работа с этой библиотекой освещена в книге Фаронова "Turbo Pascal 7.0".

Второй выход использовать модуль F_Text из второго тома того же Фаронова. Модуль предоставляет более широкие возможности по управлению выводом текста чем CRT, а текже рисует текстовые рамки с заголовком. Но тут, если вы хотите чтобы время обновлялось, вам надо подумать о замене стандартного ввода на свой.

Исходник модуля прилагаю.

ЗЫ. Кто сказал что динозавры вымерли! :-)
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: DNK (статус: Студент)
Время отправки: 6 августа 2007, 20:19
Оценка за ответ: 5

Комментарий к оценке: Спасибо, а книга эта у меня имеется, я уже начинал эту библиотеку изучать, да че то как то пока не до того... :)

Ответ #4. Отвечает эксперт: Aleksey P. Kharitonov

Здравствуйте, Гадлевский Олег Вячеславович!
Для решения этой проблемы вы можете скачать модуль I_clock находящийся здесь:
http://www.sources.ru/pascal/interrup/l_clock.htm
С помощью которого вы сможете вывести текущее время. Переделать при надобности в таймер труда не составит, я думаю. Пример использования прилагается.
Объявленные в модуле процедуры:
SetClockXY(X,Y); - здесь указываете расположение часов
StartClockXY; - запускаем часы
ClockStop; - останавливаем.
Всё просто и никаких циклов в основной программе :) Удачи!

Ответ отправил: Aleksey P. Kharitonov (статус: 3-ий класс)
Время отправки: 6 августа 2007, 21:28
Оценка за ответ: 5

Комментарий к оценке: Спасибо большое! Наконец то нашелся человек, который понял, что именно нужно! :)

Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 6 августа 2007, 22:56; участников в обсуждении: 3.
Градов Ю.М.

Градов Ю.М. (статус: 8-ой класс), 4 августа 2007, 13:45 [#1]:

To Косолапов Дмитрий Юрьевич
А ведь вопрос для Pascal
alone

alone (статус: Посетитель), 4 августа 2007, 21:15 [#2]:

:) Кстати да, я хотел бы реализовать это в Паскале, а не в Делфи. Как это сделать в Делфи я знаю ;)
Косолапов Дмитрий Юрьевич

Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 4 августа 2007, 22:35 [#3]:

Н-да, что-то не обратил внимания, что про Паскаль-то речь...

Нашел в модуле WinDos процедуру GetTime:
procedure GetTime(var Hour, Minute, Second, Sec100: Word);

Во-вторых, с помощью модуля crt мы сможем позиционировать курсор в нужном месте экрана процедурой GotoXY. Вывод текста - обычным write.

Ну и в третьих, все это дело должно выполняться в некоем цикле, например, repeat until KeyPressed;
alone

alone (статус: Посетитель), 4 августа 2007, 23:42 [#4]:

Как бы объяснить... Суть предполагаемой программы не сводится к тому, чтобы просто выводить текущее время; задача состоит в том, чтобы во время выполнения каких-либо операций, т.е. основной программы, выводилось еще и текущее время. Надеюсь, что объяснил понятно. А если следовать Вашим советам, Дмитрий Юрьевич, то программа все силы и мощь процессора бросит на то, чтобы просто вывести время (это если использовать "цикл, например, repeat until KeyPressed")
Косолапов Дмитрий Юрьевич

Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 5 августа 2007, 10:01 [#5]:

Да я этот цикл просто для примера привел. Если у Вас какой-то другой цикл, я ж не против ^_^
alone

alone (статус: Посетитель), 6 августа 2007, 22:52 [#6]:

Aleksey P. Kharitonov, этот модуль - вот как раз самое то!!! Ну просто огромное спасибо!
alone

alone (статус: Посетитель), 6 августа 2007, 22:56 [#7]:

А, кстати,Aleksey P. Kharitonov, только один недостаток с Вашей стороны - там процедура называется ClockStart, а не StartClockXY. Ну это так, маленькая поправка ;)

31 января 2011, 20:02: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:36
Выполнено за 0.02 сек.