Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2008, 11:13   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию Помогите с таймером

Подскажите пожалуйста,делаю таймер что бы
в Label отображалось часы, минуты и секунды
Пишу следующий код:
Код:
procedure TForm1.Timer3Timer(Sender: TObject);
begin
 s:=s-1;
if h<10 then h1:='0'+InttoStr(h) else h1:=IntToStr(h);
if m<10 then m1:='0'+InttoStr(m) else m1:=IntToStr(m);
if s<10 then s1:='0'+InttoStr(s) else s1:=IntToStr(s);
eee:=h1+':'+m1+':'+s1;
Form1.Label8.Caption:=eee;
if (s=0)and(m>0) then
begin
s:=60;
m:=m-1;
Работает если вводить в секунды хотя бы 1,
если будет ноль и запустить таймер,
например 00 01 00 то отображается так:
00 01 0-2 и пошло по возрастанию
Этот код работает с минутами и не корректно с
секундами,а подскажите как работать с часами,
если вводишь час то начинают секунды опять
по нарастающей отображаться
За частые поиски был забанен во всех известных
поисковых системах!

Последний раз редактировалось Stilet; 02.06.2008 в 09:18.
Михаил Юрьевич вне форума Ответить с цитированием
Старый 01.06.2008, 12:04   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Код:
function str0(n:integer):String;
begin
   result := IntToStr(n);
   if n < 10 then result := '0'+result
end;

procedure TForm1.viewTime;
begin
   Label1.Caption := Str0(h)+':'+Str0(m)+':'+Str0(s);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   viewTime;

   if h+m+s = 0 then exit;

            dec(s); if s >= 0 then exit;
   s := 59; dec(m); if m >= 0 then exit;
   m := 59; dec(h); if h >= 0 then exit;

   h := 0; m := 0; s := 0;
   timer1.enabled := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   h := 1;
   m := 1;
   s := 1;
end;
alexBlack вне форума Ответить с цитированием
Старый 01.06.2008, 13:19   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

а зачем это вообще надо? Легче сделать так:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:=TimeToStr(now);
end;
FaTaL вне форума Ответить с цитированием
Старый 02.06.2008, 09:05   #4
strannik
python developer
Пользователь Подтвердите свой е-майл
 
Аватар для strannik
 
Регистрация: 30.11.2006
Сообщений: 81
Сообщение

может так?
Код:
...
var
  Form1: TForm1;
  h, m, s, l: integer;
implementation

{$R *.dfm}
function Zero(w:integer): string;
var
 st:string;
begin
 str(w:0,st);
 if length(st)=1 then st:= '0' + st;
 Zero := st;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 label1.Caption:=zero(h)+':'+zero(m)+':'+zero(s)+':'+zero(l);
 l:=l+1;
 if l=100 then
 begin
  s:=s+1;
  l:=0;
   if s=60 then
    begin
     m:=m+1;
      if m=60 then
       begin
        h:=h+1;
        m:=0;
       end;
     s:=0;
    end;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 h:=0;
 m:=0;
 s:=0;
 l:=0;
end;
Границы расширяет тот, кто выходит за них.
strannik вне форума Ответить с цитированием
Старый 02.06.2008, 10:17   #5
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Что бы в каждом лабеле отображались часы, минуты, секунды и т.д. можно сделать так:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
Var
U: SystemTime;
begin
GetLocalTime(U);
Label1.Caption:=IntToStr(U.wYear);
Label2.Caption:=IntToStr(U.wMonth);
И так далее

end;
Всегда рад помочь!

Последний раз редактировалось Stilet; 03.06.2008 в 08:29.
Terran вне форума Ответить с цитированием
Старый 02.06.2008, 17:56   #6
Andre1723
Пользователь
 
Аватар для Andre1723
 
Регистрация: 17.02.2008
Сообщений: 74
По умолчанию

Я делал так:
//Индикация времени
Код:
procedure TfmMain.Timer1Timer(Sender: TObject);
begin
 If sec = 59 Then
    begin
      inc(min);
      sec:= 0;
      If min = 60 Then
        begin
          inc(ch);
          min:= 0;
          If ch = 24 Then
            begin
              ch:= 0;
            end;
        end;
     end
     Else
      begin
       inc(sec);
      end;

  If ch < 10 Then
    c:= '0'+ IntToStr(ch)
    Else
      c:= IntToStr(ch);
  If min < 10 Then
    m:= '0'+ IntToStr(min)
    Else
      m:= IntToStr(min);
  If sec < 10 Then
    s:= '0'+ IntToStr(sec)
    Else
      s:= IntToStr(sec);
  fmMain.lbClock.Caption:= c + ':'+ m + ':'+ s;
end;

Последний раз редактировалось Stilet; 03.06.2008 в 08:29.
Andre1723 вне форума Ответить с цитированием
Старый 02.06.2008, 19:12   #7
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Кстати, в библиотеке RxLib есть компонент RxClock, который отлично справляется с поставленной задачей
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 03.06.2008, 08:10   #8
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

можно сделать намного проще:
Код:
procedure TForm1.Timer1Timer(Sender:TObject);
var 
DateTime:TDateTime
begin
DateTime:=Time;
Label1.Caption:=TimeToStr(DateTime);
end;
и все.

Последний раз редактировалось Stilet; 03.06.2008 в 08:30.
DeDoK вне форума Ответить с цитированием
Старый 03.06.2008, 08:37   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Касаемо Всех: Про теги оформления не забываем!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2008, 17:47   #10
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Мне больше нравится:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption:= FormatDateTime('dddddd', Date) + '  ' +
  FormatDateTime('ddd', Date) +  '  ' + FormatDateTime('t', Time);
end;
Gorychev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плиз с таймером kinals Помощь студентам 23 12.08.2008 13:18
Помогите, плз, разобраться с таймером Ya_Nika Общие вопросы C/C++ 3 11.03.2008 07:58
Работа с Таймером Иринкаа Компоненты Delphi 6 22.11.2007 21:59
Работа с таймером Alika Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 12.11.2007 19:27
Тестовая программа с таймером Barrr Помощь студентам 11 21.10.2007 19:42