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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 10:14   #1
ydav_kaa
 
Регистрация: 26.03.2011
Сообщений: 4
Вопрос Визуальный отсчет времени

Всем доброго времени суток!
Пытаюсь реализовать отсчет времени на форме следующим образом:

Код:
...
var
  Form1: TForm1;
  chas, minut, sek, msec: word;
...
Код:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
    if
    ((chas = 0) and (minut = 0) and (sek = 0)) then
  begin
    showmessage('Время вышло!');
    timer2.Enabled := false;
  end;

  sek := sek - 1;
  if (sek = 0) then
  begin
    minut := minut - 1;
    sek := 59;
  end;

  if (minut = 0) then
  begin
    chas := chas - 1;
    minut := 59;
  end;

  hour.Caption := IntToStr(chas);
  min.Caption := IntToStr(minut);
  secondz.Caption := IntToStr(sek);

end;
Где chas, minut, sek беру следующим образом
Код:
DecodeTime(JvTimeEdit1.Time, chas, minut, sek, msec);
Все бы хорошо, но...
начало

и дальше...

в чем ошибка?
ydav_kaa вне форума Ответить с цитированием
Старый 29.03.2011, 10:26   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Может вот из-за этого?
Код:
if (minut = 0) then
  begin
    chas := chas - 1;
    minut := 59;
  end;
когда минут ноль, уменьшается час, но проверки что час равен нулю нет.
psycho-coder вне форума Ответить с цитированием
Старый 29.03.2011, 12:24   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

нет, тут думаю надо просто проверку на окончание времени поставить в конец процедуры и всё дб пучком. Т.е. сперва вычет времени, а уже только потом проверка на окончание отсчета, а не наоборот. Есть правда минус - если запустите таймер при всех нулях, то он у вас пойдет с максимума (т.к сперва вычтется время), и надо в процедуре запуска поставить проверку на все нули и не запускать при таком случае
phomm вне форума Ответить с цитированием
Старый 29.03.2011, 12:37   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

У меня например, отсчет идет на минуты (прога для выключения компа).
Код:
procedure TMainForm.Timer1Timer(Sender: TObject);
var
  time: Integer; // Для отображения оставшегося времени
begin
  // first ставится в истину при первом запуске, а интервал в 1 
  if first then
  begin
    Timer1.Interval := mMin; // mMin = 60000 = одной минуте
    first := false;
  end;
  
  if min = 0 then
  begin
    Shutdown; // Время истекло
    Exit;
  end;
  
  // в кнопке запуска (где задаются начальные значения), min устанавливается в 
  // min := StrToInt(Edit1.Text) * mMin;
  Dec(min, mMin); // Уменьшение min на 60000
  time := Round(min/mMin); // Ну, и сам вывод инфы
  label3.Caption := 'Осталось: ' +  IntToStr(time) + OutTitle(time); // OutTitle формирует окончание слов, это не стандартная функция.
  Tray.Hint := Label3.Caption;
end;
Но это у меня.
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать отсчет времени? Aboltus Общие вопросы Delphi 11 24.05.2011 20:45
обратный отсчет(таймер) DEsh Microsoft Office Excel 1 19.11.2009 22:45
ОТСЧЕТ ВРЕМЕНИ crit Компоненты Delphi 29 10.06.2009 14:38
Отсчет времени в pascal с помощю встроенного assemblera? Geddar Помощь студентам 2 06.03.2009 12:30
Отсчет времени в С Raptor Помощь студентам 13 29.12.2007 16:32