Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Модератор
2639 / 1751 / 920
Регистрация: 16.10.2013
Сообщений: 5,067
Записей в блоге: 14
1

Пишу прогу Таймер. Пмогите пожалуйста разобраться

18.10.2013, 15:42. Показов 659. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно чтобы пользователь задавал с через компоненты edit время(часы, минуты, секунды) и начинается отсчет этого времени, выводится в label. Не получается сделать все правильно.
Вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
// Нажатие кнопки Пуск
procedure TForm7.Button1Click(Sender: TObject);
begin
 if (edit1.Text='0') and (edit2.Text='0') then begin
  showmessage('Задайте время!');
  exit;
 end
 else begin
 dt:=EncodeTime(0,StrToIntDef(Edit1.Text,0),StrToIntDef(Edit3.Text,0),StrToIntDef(Edit2.Text,0));
 Timer1.Enabled:=true;
 end;
end;
 
// Нажатие кнопки Сброс
procedure TForm7.Button2Click(Sender: TObject);
begin
   Timer1.Enabled := false;
dt:=0;
label16.Caption:='час:мин:сек';
edit1.text:='0';
edit2.text:='0';
edit3.text:='0';
end;
 
 
// Событие работы таймера
procedure TForm7.Timer1Timer(Sender: TObject);
begin
label16.caption:=FormatDateTime('hh:nn:ss',dt);
 dt:=IncSecond(dt,-1);
 if dt=0 then
 begin
  TTimer(sender).Enabled:=false;
  showmessage('Заданное время вышло!');
 end;
end;
на форме компоменты edit расположены таким образом:
edit3 - часы
edit1 - минуты
edit2 - секунды

На втором рисунке показываю как он ошибочно выводит вместо часов минуты, вместо минут - секунды.. Не понятно как чтобы он еще часы выводил.
Изображения
  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2013, 15:42
Ответы с готовыми решениями:

Пишу чат. Не могу разобраться с потоками
В данной области я чуть менее чем полностью новичок. Принцип простой есть сервер, к нему...

Пишу рассказ. Не могу разобраться с термодинамикой
Здравствуйте, дорогие инженеры и физики! Я пишу научно-фантастический рассказ, но не могу...

Пишу чат, чтобы разобраться с работой над сетью в Qt
Привет. Пишу по уроку с хабра чат, что бы разобраться с работой над сетью в Qt. Связал только...

пишу програму по очистке temp что то не работает помогите разобраться
программа удаляет все старые файлы которые лежат более 7 дней в папке temp помогите дальше как...

7
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
18.10.2013, 15:52 2
Цитата Сообщение от long399 Посмотреть сообщение
FormatDateTime('hh:nn:ss'
nn - это что ? нинуты ?)
1
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
18.10.2013, 15:57 3
Цитата Сообщение от mss Посмотреть сообщение
nn - это что ? нинуты ?)
А ты что подумал?

Добавлено через 3 минуты
Цитата Сообщение от long399 Посмотреть сообщение
На втором рисунке показываю как он ошибочно выводит вместо часов минуты
Просто кто-то неверно задает параметры функции EncodeTime
1
Модератор
2639 / 1751 / 920
Регистрация: 16.10.2013
Сообщений: 5,067
Записей в блоге: 14
18.10.2013, 16:00  [ТС] 4
Delphi
1
label16.caption:=FormatDateTime('hh:mm:ss',dt);
исправил, но почему все точно также и осталось( Из поля куда ввожу часу он минуты определяет, а куда ввожу минуты - определяет как секунды. То что ввожу в поле секунды вообще не понятно куда девается... часы всегда почему-то считает как 00

Добавлено через 2 минуты
Цитата Сообщение от northener Посмотреть сообщение
А ты что подумал?

Добавлено через 3 минуты

Просто кто-то неверно задает параметры функции EncodeTime

Подскажите пожалуйста как правильно все вывести..
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
18.10.2013, 16:06 5
Заимей хорошую привычку именовать компоненты (как и любые иные идентификаторы) осмысленно - тогда и проблем с глупейшими собственными ошибками будет намного меньше

Если Edit1 предназначен для ввода усером кол-ва часов, то почему не обозвать этот компонент, скажем, edTotalHours ?
1
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
18.10.2013, 16:11 6
Цитата Сообщение от long399 Посмотреть сообщение
label16.caption:=FormatDateTime('hh:mm:ss',dt);
исправил
Молодец. Теперь вместо минут будут выводиться месяца.

Добавлено через 3 минуты
Цитата Сообщение от long399 Посмотреть сообщение
Подскажите пожалуйста как правильно все вывести
EncodeTime
1
Модератор
2639 / 1751 / 920
Регистрация: 16.10.2013
Сообщений: 5,067
Записей в блоге: 14
18.10.2013, 16:18  [ТС] 7
Обозвал компоненты как вы посоветовали, но видимо дело не в этом было, ибо он выводил точно также все.. я уже не знал что и делать чтобы он стал выводить все правильно. Попробовал наугад и получилось. Оказывается надо было задавать функции EncodeTime параметры следующим образом:

Delphi
1
 dt:=EncodeTime(StrToIntDef(edhour.Text,0),StrToIntDef(edmin.Text,0),StrToIntDef(edsec.Text,0), 0);
А до этого я задавал вот так:

Delphi
1
 dt:=EncodeTime(0,StrToIntDef(edhour.Text,0),StrToIntDef(edmin.Text,0),StrToIntDef(edsec.Text,0));
Всем спасибо за помощь!!!
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
18.10.2013, 16:22 8
long399, пример: Работа со временем. Таймер с прямым счётом.

Добавлено через 3 минуты
Ещё примеры:
1. Таймер с прямым счётом с синхронизацией от системного таймера. - Зависит от показаний системных часов.
2. Таймер с прямым счётом с синхронизацией от мультимедийного таймера. - Не зависит от показаний системных часов.
1
18.10.2013, 16:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2013, 16:22
Помогаю со студенческими работами здесь

Пишу реферат. Ответьте пожалуйста на соц опрос
http:// nektar .biz .nf/poll/ без пробелов, прошу отвечать честно, заранее спасибо. Отписываем...

Пишу код по гайду, но он работает некорректно. Пожалуйста, укажите на ошибку
Привет. Прошу помочь с объяснением причины, почему данный код отказывается нажимать клавиши в...

Переведите пожалуйста прогу)
Program m3; Uses CRT; Const n=5; m=5; k1=100; k2=k 1 *2+1; Type matr =array of integer; ...

Прокомментируйте пожалуйста прогу
#include "iostream" #include <conio.h> #include <math.h> using namespace std; float...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru