Как сделать часы в делфи

Добавил пользователь Евгений Кузнецов
Обновлено: 18.09.2024

Определение текущего времени(отдельно часы, минуты, секунды)

>> Определение текущего времени(часы, минуты, секунды)

Зависимости: SysUtils, Classes

Автор: Eagle, Copyright: MegaSoft

uses SysUtils, Classes;

function gethours: integer;

function getmins: integer;

function getsecs: integer;

function gethours: integer;

h := strtoint(s[ 1 ] + s[ 2 ]);

function getmins: integer;

h := strtoint(s[ 4 ] + s[ 5 ]);

function getsecs: integer;

h := strtoint(s[ 7 ] + s[ 8 ]);

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

Какой задали вопрос так и получили ответ. А именно никакой.

Видимо из всего сказаного у Вас есть
1. Проект. С одной формой. На этой форме отображаются некие графические часы. Сразу вопрос - при изменении этой формы изображение часов страдает? Т.е. может ли она масштабироваться? Размеры часов на этой форме подойдут для другой формы?
2. Ещё один проект с ещё одной формой. Вот именно на эту форму вы хотите вывести изображения часов. В какой нибудь угол.

Ха. . Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха.

Долгое продолжтиельное Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха.
Бурные

Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха.

Долгое продолжтиельное Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха.
Бурные

Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха Ха.

Мне нужно написать прогу, типа планировщика. Она использует часы. Как можно привязать Windowsовские часы или создать новые? Помогите, плз.

23 ответа

Tek_Time:String;
Tek_Time := timetostr(time);
Юзай как массив,ну например
Tek_Time[1] + Tek_Time[2] + Tek_Time[3] + Tek_Time[4] + Tek_Time[5]
Обрабатывай каждую секунду в таймере

Мне кажется все проще. По-крайней мере на C++ Builder'е, который родной братец Дельфи. Добавляешь в программу таймер, с периодом какой тебе надо (например 1 секунда), и каждую секунду в нем сравниваешь текущее время с тем что тебе надо. В Дельфи наверняка все точно так же.

P.S. Извиняюсь, если в Дельфи это не так делается.

Честно говоря, я не очень хорошо шарю в Delphi. Я конечно таймеры знаю, но дело в том, что часы должны работать даже когда прога вырублена и компьютер тоже не пашет. Может быть можно как-то сравнивать время с Виндосовским?:confused: Или Dstr, может объяснишь поподробнее эти Tek_Time'ы? Буду очень "признателен". Заранее тханкс.


Может проще тупо попить водки и плюнуть на всё это. :eek:

К сожалению не могу забить на это всё. Кстати, мне в этой проге даже не нужно время, мне нужны дни недели, числа месяца и месяцы. Всё. Дайте дельный совет. Я чайнег.:p


помоему вы усложнили себе задачу, если забыть насколько возможно реализовать то что вы хотите, может объясните, зачем вам надо чтобы часы работали когда прога, да и еще и комп не работают? кто вообще это оценит и кому это пригодится?

Прога должна выдавать инфу относящуюся к апрелям, мартам и т.д.(месяцам), числам(1,2,3,4,5 и т.д.) и дням недели. Если можно как-то сделать часы в Delphi и просто сравнивать их с Виндосовскими, то скажите пожалуйста - как?


допускаю что у меня шариков не хватает понять ваши глубокии мысли, но может объясните конкретно, какую именно информацию вам надо получить о месяцах и днях. со своей стороны хочу сказать, чтобы не должна была делать ваша программа, заявление что часы из вашей проги должны работать даже тогда, когда выключен комп, и естественно программа не работает - абсурдны, имхо. без обид только :).

Возможно. Я конечно понимаю, что я совсем чайнег. Попытаюсь объяснить. Прога - планировщик. Вы запускаете аппарат (то бишь компьютер), после загрузки Винды и прочего барахла запускается эта прога, которая выдаёт ваши планы на:
1. Текущий месяц
2. Текущий день недели
3. Текущее число.

Дело в том, что все планы распределяются по месяцам, дням недели и числам. Это не я придумал. Это прога бухгалтерского планирования. Допустим в Марте они сдают отчёты, апреле ещё что-то. Но к примеру 5-ого числа каждого месяца они оплачивают налоги ли что-нибудь эдакое. А по понедельникам они чо-нить ещё учреждают. Так вот прога должна выдавать эти планы отдельно по месяцам, дням недели и числам. Короче она должна знать текущее число, месяц и день недели. Вроде всё. Как мог объяснил.

я Делфи вообще не знаю :), так что оценить возможности предыдущих советов не смогу, но в WIN32 API есть функции


при их помощи без проблем можно узнать текущию дату, подробности можно посмотреть здесь, только примеры там помоему на С++.

Оригинальная идея хранить в незапитаной оперативе програмки=).Хатя есть там такая тема почти во всех новых биосах(WakeUP штоли. ) которая может включать компьютер сама. Никогда не пробовал юзать,но програмно там чето изменить - 100% запаришся.

А все данные удобнее хранить в базе,а можно и TXT - ну каждая памятка-строка,где все нужные те по отдельности параметры разделены например запятой.Файл прочитать и разделить по строчкам умеет TStringList.


никаких тхт, Базы Данных для этого существуют, и не надо изврата, имхо. хотя проблема была, как узнать текущее время, для этого и существуют системные функции.

никаких тхт, Базы Данных для этого существуют, и не надо изврата, имхо. хотя проблема была, как узнать текущее время, для этого и существуют системные функции.

Извиняюсь, можно все настройки еще в базе хранить :)
тока зачем?

txt были есть и будут есть.

Извиняюсь, можно все настройки еще в базе хранить :)
тока зачем?

txt были есть и будут есть.


Вопрос не в том, где хранить. Можно очень неплохо с txt-базами оперировать. Кстати, Марко Кэнту даёт наглядный пример такового наследыша TDataSet. Вопрос в необходимости использования БД. Какую БД можно использовать бесплатно? MySQL? Но её библиотеки весят больше, чем может весить сей планировщик. FB? Такая же беда.

Впрочем, факт остаётся фактом: чтобы не изобретать в стотысячный раз лесапет, нужно использовать БД (хотя бы свою) c соответствующим интерфейсом (ADO например). В случае с ADO я бы предпочёл XML, как формат хранения локальной информации.

Но автор ставит совершенно неслыханное условие! Работу программы при выключенном питании! И это всё для того, чтобы бухгалтерам напоминать, когда сдавать квартальный отчёт в ФОМС.

Не хочу насмехаться ни над автором, ни над руководством, но мне сдаётся, что руководству требуется элементарная "напоминалка" (скорее всего шеф произнёс: "Сделай так, чтобы эти тётки включили компьютер, а им в харю оранжевыми буквами - через неделю вы будете лишены всего, если не сдадите отчёты!"), а автор, возможно в силу своей неопытности в программировании, фантазиями своими (ну кому из начинающих программистов они не присущи? Вспомним себя. ) решил сотворить нечто совсем уж небывалое.

Компонент Delphi Timer очень простой компонент, который не виден на экране, но, тем не менее, Timer Delphi выполняет очень важные функции в программе. Delphi Timer позволяет вводить необходимые задержки между выполнением тех или иных действий.

Компонент Timer имеет всего четыре свойства и одно событие, и работать с компонентом Delphi Timer очень просто.

Delphi Timer
СВОЙСТВО НАЗНАЧЕНИЕ
Enabled "Включение-выключение" таймера
Interval Интервал срабатывания (в миллисекундах)
Name Имя компонента в программе
Tag Произвольный числовой параметр

Помещаем компонент Delphi Timer на Форму. Задаём в свойстве Interval нужный интервал времени (измеряется в миллисекундах). Переходим на вкладку Events и видим единственное событие, поддерживаемое компонентом Delphi Timer: OnTimer. Выполнив по нему двойной щелчёк, или также двойной щелчёк по самому компоненту, мы попадём в сформированный средой Delphi обработчик события, где и введём код, предусматривающий выполнение тех или иных действий.

Так как по умолчанию сойство Enabled установлено в True, то в программе через установленный в свойстве Interval промежуток времени таймер сработает, то есть выдаст событие OnTimer. Будут выполнены необходимые действия. Иногда же запланированные действия должны произойти не автоматически при старте программы, а при выполнении каких-либо других действий. В этом случае необходимо свойство Enabled в Инспекторе Объектов установить в False. Затем в необходимый момент нужно выполнить команду:

Учтите, что пока Timer1.Enabled равно True, компонент продолжит генерировать событие OnTimer по истечении каждого промежутка времени, равного значению свойcтва Interval. Поэтому, если нужно только единичное срабатывание, то таймер нужно остановить, причём сразу же:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=False;
< Необходимые действия >
end;

Если же запрограммировать "выключение" таймера после выполнения предусмотренных в программе действий, то при достаточно малом по сравнению с продолжительностью необходимых действий значении свойства Interval таймер вновь сработает, и это может помешать ходу программы.

Компонент Delphi Timer не является очень точным и не подходит для измерения малых промежутков времени. Его точность порядка 50 миллисекунд. В качестве примера приведу простую программу, отображающую текущее время.

На форме будут только компонент Label и собственно наш компонент Delphi Timer. Свойство Timer можно оставить равным 1000, но раньше на более медленных компьютерах приходилось отображать время несколько раз в секунду, так как из-за влияния других выполняемых компьютером процессов выводимые раз в секунду показания "плавали", что было хорошо заметно на глаз. Размер шрифта возьмём побольше - 50, и подберём более гладкий, я взял Bell MT. Растянем на всю Форму: Align=alClient. Ну и, собственно, сам код:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=TimeToStr(Now);
end;

Вот и всё! Delphi Now - это системная функция, возвращающая текущую дату-время в соответствующем формате TDateTime. Если преобразовывать её в строку функцией TimeToStr, то она вернёт текущее время, если DateToStr, то текущую дату. Если мы хотим отображать в нашей программе и дату тоже, достаточно поставить ещё один компонент Label, и функцией DateToStr передавать в него дату. Можете скачать проект.

Читайте также: