|
Вопрос # 825/ вопрос решён / |
|
Приветствую, уважаемые эксперты! Подскажите пожалуйста, как отображать в течение всего времени работы программы текущее время, скажем, в правом нижнем углу?
 |
Вопрос задал: 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
|
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 4 августа 2007, 22:35 [#3]:
Н-да, что-то не обратил внимания, что про Паскаль-то речь...
Нашел в модуле WinDos процедуру GetTime:
procedure GetTime(var Hour, Minute, Second, Sec100: Word);
Во-вторых, с помощью модуля crt мы сможем позиционировать курсор в нужном месте экрана процедурой GotoXY. Вывод текста - обычным write.
Ну и в третьих, все это дело должно выполняться в некоем цикле, например, repeat until KeyPressed;
|
|
alone (статус: Посетитель), 4 августа 2007, 23:42 [#4]:
Как бы объяснить... Суть предполагаемой программы не сводится к тому, чтобы просто выводить текущее время; задача состоит в том, чтобы во время выполнения каких-либо операций, т.е. основной программы, выводилось еще и текущее время. Надеюсь, что объяснил понятно. А если следовать Вашим советам, Дмитрий Юрьевич, то программа все силы и мощь процессора бросит на то, чтобы просто вывести время (это если использовать "цикл, например, repeat until KeyPressed")
|
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 5 августа 2007, 10:01 [#5]:
Да я этот цикл просто для примера привел. Если у Вас какой-то другой цикл, я ж не против ^_^
|
|
alone (статус: Посетитель), 6 августа 2007, 22:52 [#6]:
Aleksey P. Kharitonov, этот модуль - вот как раз самое то!!! Ну просто огромное спасибо!
|
|
alone (статус: Посетитель), 6 августа 2007, 22:56 [#7]:
А, кстати,Aleksey P. Kharitonov, только один недостаток с Вашей стороны - там процедура называется ClockStart, а не StartClockXY. Ну это так, маленькая поправка
|
31 января 2011, 20:02: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|