Школоло / Говнокод #2559 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
procedure TForm1.Timer1Timer(Sender: TObject);
begin
sec:=sec+1;
if sec>59 then begin sec:=0; min:=min+1; end;
if min>59 then begin min:=0; ch:=ch+1; end;
statusbar1.Panels.Items[1].Text:=IntToStr(ch)+':'+IntToStr(min)+':'+IntToStr(sec);
end;

таймер

Запостил: xXx_totalwar xXx_totalwar, (Updated )

Комментарии (13) RSS

  • Очень интересный выход) в свое время так же делал)))
    Ответить
    • +1. Единственное, что я вижу, -- это то, что можно было использовать одну переменную, под секунды. Часы вычислять как sec/3600, минуты как (sec/60)%60, ну а секунды как sec%60.
      Ответить
      • Хм, ну в оригинале даже лучше. Не приходится раз в секунду делать два деления и два деления с остатком 🙂
        Где здесь говнокод, xXx_totalwar?
        Ответить
      • И каждый раз, когда надо вставить время, Вы собираетесь делить? Это оправдано только в тех случаях, когда памяти совсем мало, а мегагерцев много...
        Ответить
    • В даном случае использован компонент TTimer, который не гарантирует точное срабатывание. Потому часики- то и будут спешить.
      Ответить
      • Касаемо времени винда вообще ничего не гарантирует, т.к. не является ОСРВ.
        А интервал таймера меньше 10 мс вообще крайне сложно получить.

        Я в точности так (как автор кода) делал часы под сигнальный процессор - только таймер был аппаратный и не спешил ))
        Ответить
    • tatusbar1.Panels.Items[1].Text := FormatDateTime('HH:MM:SS',now);
      вот в этом и говнокод (если аффтар хотел часики)
      Ответить
      • За подобный код каждый раз бью знакомого по рукам. И все равно каждый раз одно и тоже.
        Ответить
  • Вот получается у людей по 25+ часов в сутки.
    Ответить
    • Наверное, им с учетом этого таймера почасово платят.
      Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8