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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2010, 16:31   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Обратный отсчёт в часах минутах и секундах

Разобрался только в минутах и секундах
Код:
var
  sec, min, hour: Integer;
begin
  dec(C);
  min := C div 60;
  sec := C mod 60;
с часами будет так?
Код:
  hour := C div 60;
  min := C mod 60;
  sec := (C mod C) mod 60;
Shouldercannon вне форума Ответить с цитированием
Старый 05.08.2010, 16:42   #2
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

если я правильно понял
Код:
var
  H, M, S: Integer;
begin
  H := 10;
  M := 45;
  S := 20;
end;
....
begin
  if S <> 0 then
    dec(S) else
  if M <> 0 then
  begin
    S := 60;
    dec(M);
  end else
  if H <> 0 then
  begin
    M := 60;
    dec(H);
  end else
  begin
  ShowMessage('Время истекло!');
  end;
end;
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Sanprof; 05.08.2010 в 16:51.
Sanprof вне форума Ответить с цитированием
Старый 05.08.2010, 17:03   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Не не так. Время задаётся в C := 128 и дальше его надо разбить на hour, min, sec для дальнейшего вывода по таймеру, тоесть для обратного отсчёта.
Shouldercannon вне форума Ответить с цитированием
Старый 05.08.2010, 17:23   #4
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Не не так. Время задаётся в C := 128 и дальше его надо разбить на hour, min, sec для дальнейшего вывода по таймеру, тоесть для обратного отсчёта.
чем вам мой вариант не подходит? ставим Interval у Timer = 1000 и пользуем
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  C := 1000;
  H := (C div 3600);
  Label1.Caption := inttostr(H);
  if H > 0 then
  M := ((C - H*3600) div 60) else
  M := (C div 60);
  Label2.Caption := inttostr(M);
  if M > 0 then
  S := ((C - H*3600 - M*60)) else
  S := C;
  Label3.Caption := inttostr(S);
  timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if S <> 0 then
  begin
    dec(S);
    Label3.Caption := inttostr(S);
  end else
  if M <> 0 then
  begin
    S := 60;
    dec(M);
    Label2.Caption := inttostr(M);
  end else
  if H <> 0 then
  begin
    M := 60;
    dec(H);
    Label1.Caption := inttostr(H);
  end else
  begin
  timer1.Enabled := false;
  ShowMessage('Время истекло!');
  end;
end;
теперь можете H, M, S выводить на экран
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Sanprof; 05.08.2010 в 17:29.
Sanprof вне форума Ответить с цитированием
Старый 05.08.2010, 17:30   #5
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Перевод секунд в текстовы формат типа HH:MM:SS (+ дни есть, но они закоментированы):
Код:
function SecToTime(Sec : Integer) : String;
var
  H,  M,  S,  D  : Integer;
  HS, MS, SS{, DS} : String;
begin
  S := Sec;
  M := Round(INT(S / 60));
  S := S - M * 60;
  H := Round(INT(M / 60));
  M := M - H * 60;
  D := Round(INT(H / 24));
  H := H - D * 24;
  //DS := IntToStr(D);
  if H < 10 then
    HS := '0' + IntToStr(H)
  else
    HS := IntToStr(H);
    if M < 10 then
    MS := '0' + IntToStr(M)
  else
    MS := IntToStr(M);
    if S < 10 then
    SS := '0' + IntToStr(S)
  else
    SS := IntToStr(S);
  Result := {DS+':'+}HS+':'+MS+':'+SS;
end;
Пример таймера в аттаче...
Вложения
Тип файла: rar Timer.rar (1.2 Кб, 19 просмотров)
W0LF вне форума Ответить с цитированием
Старый 05.08.2010, 19:22   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Способ хорошь. Можно сделать тоже самое, но как я предложил в самом начале, разбивая числа 120, 400, 350 на часы, минуты и секунды?
Shouldercannon вне форума Ответить с цитированием
Старый 05.08.2010, 19:45   #7
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

А чем вас этот способ не устраивает?
W0LF вне форума Ответить с цитированием
Старый 05.08.2010, 20:17   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от W0LF Посмотреть сообщение
А чем вас этот способ не устраивает?
А вдруг юзер забудет поставить : между цифрамиб тогда будет ошибка.
Shouldercannon вне форума Ответить с цитированием
Старый 05.08.2010, 20:31   #9
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

А зачем ставить? Я ж дал функцию перевода с секунд в xx:xx:xx вот его и пихайте в таймер.
W0LF вне форума Ответить с цитированием
Старый 05.08.2010, 20:55   #10
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

у меня тоже в переменной "С" лежат секунды, которые как вы говорите вводит юзер и тоже мой метод разбивает Секунды (120, 400, 600) на часы, минуты и секунды
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод изображений из папки через заданное время в секундах на PHP сайте Killer_djon JavaScript, Ajax 15 18.01.2013 07:19
Задание для планировщика MySQL. Вычисление разницв в часах между датами,временем. Avalonix SQL, базы данных 0 23.03.2010 13:47
Am и Pm в часах в Delphi TaYgA Помощь студентам 3 08.11.2009 11:53
отсчёт с определённой точки. blackstersl Общие вопросы Delphi 11 16.08.2009 11:02
Обратный отсчёт mager PHP 3 01.04.2009 17:16